ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Hi @rozoalex,
The error is "probably" on your CMakeLists.txt
, but since it wasn't provided, I'll show you the steps to make custom action
from zero (which can be useful for more people), as shown in this video.
Since the name of your package is turtlebot3_console_controller
and the action name is Motor.action
, we are going to use the same names for simplicity.
mkdir ~/catkin_ws/src/ -p
cd ~/catkin_ws/src/
catkin_init_workspace
turtlebot3_console_controller
that depends on the packages actionlib_msgs
and std_msgs
:cd ~/catkin_ws/src/
catkin_create_pkg turtlebot3_console_controller actionlib_msgs std_msgs
Motor.action
on turtlebot3_console_controller/action
:cd ~/catkin_ws/src/
mkdir -p turtlebot3_console_controller/action
touch turtlebot3_console_controller/action/Motor.action
Motor.action
the content provided on the question:# This is an action definition file, which has three parts: the goal
# the result, and the feedback.
# Part 1: the goal.
#
# The angle in degree the robot to turn, sent by client main
float64 angle
---
# Part 2: the result, sent by action server unpon completion
#
# How much time used
duration time_elapsed
# How many updates thrown in total
uint32 updates_n
---
# Part 3: the feedback,to be sent periodically by server
#
# The amount of time elapsed from the start
duration time_elapsed
add_action_files
and generate_messages
from turtlebot3_console_controller/CMakeLists.txt
to be able to compile the action file. At the end, the CMakeLists.txt
will be like we have below:cmake_minimum_required(VERSION 2.8.3)
project(turtlebot3_console_controller)
find_package(catkin REQUIRED COMPONENTS
actionlib_msgs
std_msgs
)
add_action_files(
FILES
Motor.action
)
generate_messages(
DEPENDENCIES
actionlib_msgs# std_msgs
)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES turtlebot3_console_controller
# CATKIN_DEPENDS actionlib_msgs std_msgs
# DEPENDS system_lib
)
include_directories(
${catkin_INCLUDE_DIRS}
)
cd ~/catkin_ws/src/
catkin_make
Ok, now your custom action should be compiled.
To confirm it was compiled, you can create a test file named node.py
that just imports your custom action by following the steps below:
node.py
:cd ~/catkin_ws/src/
touch turtlebot3_console_controller/src/node.py
node.py
:#! /usr/bin/env python
from turtlebot3_console_controller.msg import MotorGoal, MotorResult, MotorFeedback
print 'Ok, it worked!!!'
node.py
to confirm your custom action was compiled without any problem.rosrun turtlebot3_console_controller node.py
After running node.py
you should seee the message "Ok, it worked!!!
".
In the video mentioned at the beginning we just follow the steps described here.
Hope it helps.