Last week I discussed creating an executable C++ node that publishes values from QuadcopterLogic to a specific ROS topic. This week I continued to progress towards my goal and gained further knowledge on how the script should look. Initially, I believed that the script needed to define the same functions as a sample node in the RotorS package labeled lee_position_controller_node. Although the name implies that it was simply a position controller, it advertises values to the ROS topic I was looking for. Since it seemed to publish to the topic I was focused on, I suspected that some of the files the position controller imported were from the Gazebo library, so I wanted to understand what files I had to import into my node to communicate with Gazebo. After investigating the files that were imported, I concluded that these were simply more of the RotorS logic and there was only one file that was necessary to import into my script. This makes it easier to implement our lab’s state estimator since I will not need to change any variable names.
I also looked at the script that Mighty created as an example of how the lines of code should look to publish the motor speed topic. I proceeded to run the system using my code, but the model did not hover as expected. I learned this was caused from not running quad_rates_mocap_control to set a desired position value.
I feel confident that I am close to getting the system to work properly using our lab code. The biggest obstacle is my lack of experience with C++. I have enrolled in a free edx course for C++ that I use to understand syntax errors when online forums do not help. In the coming days, I hope to have a working example of our code working with the RotorS system. My next goal is to understand how to create/import new drone models for the simulator so I can create the quadcopters we need to analyze. I also want to look at how sensors can be used in Gazebo and start working with Junseok to look at how we want use Gazebo for testing.