checkout the MCBL-00011 which can act as a cable coming from power regulator that powers both voxl and flight core
Best posts made by ryan_meagher
-
RE: VOXL flight connection with PX4
-
RE: BAR30 on Flight Core
I know this is kinda an old post but I have created a driver for px4 that can use both flavors of the MS5837 the bar2 and bar30. I will create a pull request with px4 so it will be available.
-
RE: How to copy your MAVSDK Python Docker container and edit the files?
You can add a directory from your host machine which has whatever python files you wish to add via adding a src directory path and mapping it to a path in the containers file structure.
docker run -it --rm -v /host_src_dir_path:/container_dir_path --privileged --net=host <img>:<tag>
Upon running the docker container, the directory from /host_src_dir_path will be available at /container_dir_path
-
RE: Trouble configuring m500 into Station Mode
In the future if you need to quickly change the ip address of where the voxl looks for qgc you can do
voxl-vision-px4 -i <ip>
-
RE: Building ROS node with OpenCV
@Eric-Katzfey Thanks for the suggestion.
For anyone else interested in doing this, these are the steps I took to accomplish this.
-
In order to change where the root of the docker runtime points to in the docker service go to
/etc/systemd/system/docker-start.service
and change the following line so that it uses the sd card(ext4 format) in the voxlExecStart=/usr/bin/docker daemon -g /mnt/sdcard
-
restart the service for the changes to take effect:
systemctl restart docker-start.service
-
Delete the directories that docker uses in the data partition:
cd /data; rm -rf containers linkgraph.db overlay tmp volumes graph network repositories-overlay trust
-
[NOTE] The previous commands will delete any images that were previously available.
-
You can now run
voxl-configure-docker-support.sh
and a hello world image will be created
and the directories that were deleted from the/data
partition will be in the/mnt/sdcard
directory. -
You can verify that you have freed up the /data partition via
df -h
-
-
Setting up network interfaces
So I am trying to find the place where I can setup network interfaces in order to assign a static ip address for eth0. On the rb5 I can do this via modifying the
/etc/dhcpcd.conf
file; however, this isn't present on the voxl. I see all the interfaces viaifconfig -a
and the correspondingsys/class/net
but there doesn't seem to be .network of ifcfg files there.I would have thought that the interfaces would either be in
/etc/sysconfig/network-scripts/ifcfg-eth*
or in/etc/network/interfaces
where I could modify files that could be brought up viaifconfig eth0 up
but this doesn't seem to be the case.Right now I am doing this via enabling a
systemd
serviceset -e ETH_ADD=192.168.2.120 ifconfig eth0 up || (echo " failed to open eth0" && exit 1) ip addr add ${ETH_ADD}/24 dev eth0 || (echo " failed to add ip link eth0" && exit 1)
I see that this can be done in the poky_build but any suggestions as to where this can be done on the voxl in a more Linux-esque way?
Thanks,
Ryan Meagher -
RE: micrortps setup via voxl_io
I was able to get the microRTPS_client and microRTPS_agent working between the flight core and the voxl. My ROS2 setup is now complete and I have done various testing between the flight core and voxl to confirm this. It turned out to be more work than I expected.
I created a compact microRTPS parser on the hexagon sDSP in the voxl_io on the receive side to minimize the snapdragon’s involvement with assembling messages. The messages are passed through the shared memory from the hexagon sDSP to the ARM CPU. I created a UDP tunnel in the voxl_vision (running on yocto Jethro) to tunnel UDP microRTPS messages between the host os and the Ubuntu 20.04 docker container running the micrortps_agent and ros2 px4_ros_com launch file.
There are a couple gotchas that I faced. The first is that some characters are being dropped between the flight core and the voxl every so often. I have not isolated which side is at fault (need to connect a logic analyzer and capture the event on the wire), but these cause CRC errors in the messages. Neither side reports an error on the write or read that I was able to log. If I get some additional equipment, I’ll probably try to track down which side is at fault.
I wrote a utility program that captures characters on any of the serial buses and logs the data to a file. I’ve verified that even in this simple setup, characters are being dropped. I have the baud rate set at 921600. With only about 6 messages being sent, I’m sending about 650kbps over the wire so this baud rate may need to be increased as the px4 guys recommend a minimum of 1MB.
There is also an issue with the way the micrortps_agent handles errors that can cause an eventual lockup if you have CRC errors in the messages that required some modification, which is what I believe you are facing @benjamin-linne . It seemed like the UDP messages were stopping but with tcpdump and voxl-perfmon, I was able to isolate it to the way the transport was handling errors. The fix is reasonably straightforward, but eliminating any CRC errors beforehand avoids this issue.
@benjamin-linne not sure if I’m allowed to give out the code but send me you contact info and we can talk offline.