@aashry Follow this link: https://gitlab.com/voxl-public/voxl-sdk/utilities/voxl-mpa-to-ros. Catkin_ws -> src -> msg and you will find AiDetection.msg, which you can use to build a ros custom message package (ROS has a tutorial on it I believe). You can do that in whatever workspace you are working in in your docker container. Once that is built and you source devel/setup.bash, you should be able to echo the topic and if you want to subscribe to it in a node you will need to import the message header similarly to any other message type
Best posts made by jonathankampia
-
RE: how to access tflite_data published by voxl_mpa_to_ros from local machine?
Latest posts made by jonathankampia
-
ROS2 Discovery issues
Hi, my setup is as follows:
Nvidia jetson orin communicates with VOXL 2 over ethernet onboard drone, drone communicates with GCS via doodle labs radio. All components are properly set up (i.e. I can ping the orin & VOXL2 from the gcs and vice versa).
I have some ros nodes that need the orin compute, so they run external to the VOXL. I can see/echo relevant topic information published on the VOXL (like microdds agent fmu topics) on the orin and GCS. However, I can't see anything published by nodes on the orin, even though it's on the same network as the VOXL, same domain ID, so the topics should be shared via fastdds multicast.
I've messed around with hosting a discovery server on the VOXL and seeing if that would fix the problem, but it doesn't seem to. Maybe I'm doing something wrong though.
I understand if this isnt you guys' area of expertise, but there isn't much documentation relevant to my particular setup, and most people say that it's a DDS middleware issue, but I've verified middleware compatibility and it seems to be capable of multicasting FROM the voxl. Any help / advice would be appreciated.
-
VOXL 2 Flir Boson MIPI support
Trying to integrate a Flir Boson IR camera with the VOXL2. Ideally this would be done through MIPI CSI, which is listed as a compatible interface on the VOXL 2 feature matrix webpage. Does the camera have driver support in voxl-camera-server? As far as I know voxl-lepton-server is only compatible with the Flir Lepton camera aswell.
Please let me know if this sensor is actually compatible, and through what route?
Thanks!
-
RE: ROS Melodic on VOXL-Flight
@Kiazoa-Joao I haven't worked with the voxl flight but if there's no other way probably just reflash the board? Here's a link to the modalai developer downloads: https://developer.modalai.com/
You (shouldn't?) need ROS indigo natively if you are just going to dockerize your onboard ROS stuff. All the dependencies needed by whatever code you run in the container should be satisfied within the container; what is/isn't installed outside the container shouldn't matter. But it sounds like you are running a pretty old board with possibly not the most updated firmware, so reflashing with the latest for the VOXL Flight from that website I sent might be a good idea
-
RE: ROS Melodic on VOXL-Flight
Docker is basically a tool that lets you create 'images' and run 'containers' that emulate certain environments in other foreign environments. So, you can have a container with ubuntu 18 running ROS melodic on a machine with an outdated version of ROS running kinetic or indigo or something old.
This is how I did it:
- Install docker on your base machine
- VOXL is an arm based processor as opposed to amd64, so you will need to run this: https://github.com/multiarch/qemu-user-static which will let you build containers for different system architectures
- To build a docker image, you can either pull a prebuilt base image, run it as a container, install any dependencies and copy over your ROS stuff, then docker commit it to a new image, or list all that out in a dockerfile. I prefer the first way, even though it is pretty scuffed
In your case you would want arm64v8 ubuntu 18.04 ROS melodic
Here's a list of the official docker ROS prebuilts: https://hub.docker.com/r/arm64v8/ros/ - Compress the image into a tar.gz archive, adb push it onto the VOXL and unpack it there. Then you can launch a container from the image (make sure to run it with --net=host argument), and run your ROS nodes inside the container.
There's documentation online for all four steps, and LLMs like chatgpt give pretty good general pointers on command syntax.
-
RE: Controlling digital servo through PWM output(s) on VOXL 2 IO expander board
@Zachary-Lowell-0 Hi, thanks for the reply. Based on what I have read, I think MAV_CMD_DO_SET_SERVO (183) from the MAVLINK common message set would be the correct one to send? With the fields set to channel=5 and PWM=pwm value.
import asyncio from mavsdk import System from mavsdk.mission import MissionItem, MissionPlan async def set_servo_pwm(channel, pwm_value): drone = System() await drone.connect(system_address="udp://:14540") # Wait for the drone to connect async for state in drone.core.connection_state(): if state.is_connected: print("Drone connected") break # Send the MAV_CMD_DO_SET_SERVO command await drone.action.do_set_servo(channel, pwm_value) print(f"Set servo on channel {channel} to PWM {pwm_value}") asyncio.run(set_servo_pwm(channel=5, pwm_value=1500))
I asked chatgpt for a quick example and it came up with this.
I mostly just want to avoid overriding a PWM value that the mixer is sending to channels 1-4 to actually fly the drone... Not completely sure if he pwm channel mappings make logical sense or are flipped or something weird.
-
Controlling digital servo through PWM output(s) on VOXL 2 IO expander board
Hi, I am trying to control a gimbal from onboard a VOXL 2 connected through the m0065 expander board. PWM channels 5-8 are apparently usable but I have no idea how to actually control them onboard the drone (i.e. I have no clue what QGC is doing under the hood in the actuators tab). Ideally the gimbal control script would fit cleanly into the set of ROS2 nodes I already have running on the drone, but it doesn't seem like the microdds agent advertises / subscribes to any of the uOrb messages related to servo control. If it's possible with MAVLINK directly I'll look to do it that way, but I wanted to ask for input first.
I was wondering if you guys could suggest a working approach to go about this, or provide some documentation I may have missed. Thanks!
-
RE: voxl-microdds-agent and px4_msgs offboard compatibility issue.
@Zachary-Lowell-0 Hi, sorry for the late reply. This was the issue (lol)
-
RE: VOXL2 + Doodle Labs + External Companion Computer Networking
@jonathankampia Edit: managed to fix it by disabling voxl-configure-modem and manually setting the IP of the eth0 interface. I guess 'eth1' is the J11 connector then.
-
VOXL2 + Doodle Labs + External Companion Computer Networking
Hi,
We are trying to connect an external companion computer (nvidia jetson ORIN) to a VOXL 2 via the ethernet / usb hub. We have a doodle labs radio successfully connected to the VOXL on the J11 connector. voxl-configure-modem correctly sets the eth0 network interface to the doodle IP; however the eth1 network interface (which I assume is the J13 ethernet jack on the expansion board?) seems to get automatically assigned an IP on the doodle network aswell, unrelated to voxl-configure-modem.
I can't get the external companion computer to connect to this interface. Setting a static IP on the Jetson that matches the subnet & netmask of the eth1 network interface on the VOXL2 doesn't connect. I'm not too familiar with networking, or what is going on with voxl-configure-modem. I was hoping you guys could provide some insight with regards to which network interface is which, and why the doodle is creating its own network interface in addition to the one created by voxl-configure-modem.
Thanks!
-
RE: voxl-microdds-agent and px4_msgs offboard compatibility issue.
@brahim
After doing some testing on a Starling 2 Max, I've observed that in offboard mode the drone has an incredibly hard time holding its position. I am using the same code I posted on this thread earlier, that sets a waypoint via the trajectory_setpoint topic virtually identically to how this example does it. It flies extremely well in position hold mode (when trajectorysetpoint commands are not being sent, and has an extremely accurate local position, but starts jerking around and generally having a very hard time when I switch it to offboard mode and allow my node to start publishing TrajectorySetpoint position commands.I am using the latest version of the SDK, (1.3.3), and have tried multiple version of px4_msgs, including the one gets built when you install voxl-mpa-to-ros2 and the 1.14 foxy version that can be found in the px4_msgs repository. There just has to be some communication issue going on, as the drone should fly the same in both position and offboard mode.
There appear to be no errors with the microdds agent as far as I can tell.
The only thing that makes sense is that the offboard commands are being sent in some wrong format that is messing up the drone. The fact that just them being sent messes up position mode flight (which they should have no impact on), combined with the fact that the drone flies awfully in offboard mode but seems tuned very well in position mode, suggests to me some sort of communication formatting error.