Writing the Publisher Node in C++
- To let the OS to know where ROS files are.
- Make src/talker.cpp
* This tutorial demonstrates simple sending of messages over the ROS system.
int main(int argc, char **argv)
* The ros::init() function needs to see argc and argv so that it can perform
* any ROS arguments and name remapping that were provided at the command line.
* For programmatic remappings you can use a different version of init() which takes
* remappings directly, but for most command-line programs, passing argc and argv is
* the easiest way to do it. The third argument to init() is the name of the node.
* You must call one of the versions of ros::init() before using any other
* part of the ROS system.
ros::init(argc, argv, "talker");
* NodeHandle is the main access point to communications with the ROS system.
* The first NodeHandle constructed will fully initialize this node, and the last
* NodeHandle destructed will close down the node.
* The advertise() function is how you tell ROS that you want to
* publish on a given topic name. This invokes a call to the ROS
* master node, which keeps a registry of who is publishing and who
* is subscribing. After this advertise() call is made, the master
* node will notify anyone who is trying to subscribe to this topic name,
* and they will in turn negotiate a peer-to-peer connection with this
* node. advertise() returns a Publisher object which allows you to
* publish messages on that topic through a call to publish(). Once
* all copies of the returned Publisher object are destroyed, the topic
* will be automatically unadvertised.
* The second parameter to advertise() is the size of the message queue
* used for publishing messages. If messages are published more quickly
* than we can send them, the number here specifies how many messages to
* buffer up before throwing some away.
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
* A count of how many messages we have sent. This is used to create
* a unique string for each message.
int count = 0;
* This is a message object. You stuff it with data, and then publish it.
ss << "hello world " << count;
msg.data = ss.str();
* The publish() function is how you send messages. The parameter
* is the message object. The type of this object must agree with the type
* given as a template parameter to the advertise<>() call, as was done
* in the constructor above.
Building the nodes- Modify CMakeLists.txt
- This will create two executables, talker and listner, which by default will go to into package directory of your devel space, located by default at ~/catkin_ws/devel/lib/<package name>
- Let the terminal knows ROS.
rosrun beginner_tutorials talker
rosrun beginner_tutorials listner
Writing the Publisher Node in Python
- This is where the Python scripts are saved.
chmod +x talker.py
- This is required for the Python script to be executable.
- Run talker.
chmod +x listener.py
Running the publishers and subscribers
rosrun beginner_tutorials talker
rosrun beginner_tutorials talker.py
rosrun beginner_tutorials listener
rosrun beginner_tutorials listener.py
Creating a ROS service
----- I am too tired for this.
|Homogeneous transformation (0)||2019.03.27|
|ROS cheat sheet (0)||2018.08.08|
|ROS tutorial (publisher / subscriber) (0)||2018.08.08|
|ROS tutorial (ROS package / node / topic / message / service / parameter/ launch) (0)||2018.08.08|
|MuJoCo Walker2d (0)||2018.07.27|
|Baxter in Gazebo (0)||2018.07.27|