Custom ROS Message for Line Params
All of the following instructions are based on this guide.
First create the message file using the following commands:
cd ~/bwsi-uav/catkin_ws/src/aero_control
mkdir msg
touch msg/Line.msg
gedit msg/Line.msg
In the message file, add:
float64 x
float64 y
float64 vx
float64 vy
This will enable us to transmit a P = <x, y> + t * <vx, vy>
line parameterization. (t
can be any real number and P
is a point on the line)
Each line has the sub-message type followed by the name of the variable.
Building the message with catkin
We need to make sure that the msg files are turned into source code for C++, Python, and other languages:
Open aero_control/package.xml
, and make sure these two lines are in it and uncommented:
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
Open aero_control/CMakeLists.txt
in your favorite text editor (rosed from the previous tutorial is a good option).
Add the message_generation dependency to the find_package call which already exists in your CMakeLists.txt so that you can generate messages. You can do this by simply adding message_generation to the list of COMPONENTS such that it looks like this:
# Do not just add this to your CMakeLists.txt, modify the existing text to add message_generation before the closing parenthesis
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
Also make sure you export the message runtime dependency.
catkin_package(
...
CATKIN_DEPENDS message_runtime ...
...)
Find the following block of code:
# add_message_files(
# FILES
# Message1.msg
# Message2.msg
# )
Uncomment it by removing the # symbols and then replace the stand in Message*.msg files with your .msg file, such that it looks like this:
add_message_files(
FILES
Line.msg
)
Now we must ensure the generate_messages() function is called.
For ROS Hydro and later, you need to uncomment these lines:
# generate_messages(
# DEPENDENCIES
# std_msgs
# )
so it looks like:
generate_messages(
DEPENDENCIES
std_msgs
)
At the end, run:
cd ~/bwsi-uav/catkin_ws/
catkin_make
source devel/setup.bash
To verify that the message was built sucessfully, run
rosmsg show aero_control/Line
Modifying talker.py
and listener.py
to use custom messages
Fill out the TODO
sections in line_tracker/src/talker.py
and line_tracker/src/listener.py
.
You will probabally find the following guide/example code helpful: link
Dont worry about making any files exicutable since we will be using launchfiles
To run these two files together, use roslaunch launch/talk_listen.launch
in the line_tracker
package
Writing detector.py
Fill out the TODO sections in line_tracker/src/detector.py
, you should be able to reuse code from line_tracker/src/talker.py
, your line paramaterization notebook, and this example code.
To run your code, use roslaunch aero_control detect_listen.launch
in the aero_control
package
[ ]: