So, I have read the tutorial here: http://dev.ardupilot.com/wiki/code-overview-adding-a-new-mavlink-message/
I have successfully set up the .xml file and generated the .h file, but I am confused about what exactly I should do in the main vehicle code to send it. Since it is just a custom message, any sketchy but working solution is fine.
Also, since I am trying to send the data from a custom made lidar back to an onboard raspberry pi, how to make sure that I send the message at at least 20hz or something? Looking at the output of the raw Mavlink messages already existed (via Dronekit), they seem to be sent at a much lower rate than 20hz.
Replies
Is there a reason you need to use a custom message? there's already a mavlink message for lidar sensors - DISTANCE_SENSOR.
Take a look at the .\libraries\AP_RangeFinder folder of the APM source code. There's plenty of examples of lidar systems in there.
I am going to use lidar to do 3D scanning, so in addition I will need the information from two servos that control the mirror that spins the laser. Therefore I want to create a new custom message to group these info (along with another ultrasonic sensor reading and an index) together so I can access it via Dronekit more easily. However, it seems that I will still have to make a parser to read the raw mavlink messages, not sure if there is an easier way to do that. Also importantly, I want it to be sent at 20hz or above for obvious reasons. Thank you.
Sending of mavlink messages is limited to a maximum of 10Hz in APM.
Since you've got an on-board Rasberry Pi, it should be easier to just connect the lidar directly to it and let Dronekit read the data from there.
you can send mavlink at up to 50Hz in ArduPilot now
I have written my own library to make things more flexible, so I thought it might be worth it to create my own custom message.
Also, 50hz would be great if that is possible.
But, back to my original question, what should I do in the main vehicle code (like Arducopter.cpp or GCS_MAVLINK.cpp) to send the message? Thanks!