Giter Site home page Giter Site logo

danielsnider / follow_waypoints Goto Github PK

View Code? Open in Web Editor NEW
200.0 200.0 89.0 1.43 MB

Create and follow a set of navigation goals for use with ROS move_base

Home Page: http://wiki.ros.org/follow_waypoints

License: The Unlicense

CMake 4.64% Python 95.36%

follow_waypoints's People

Contributors

angryturtle2 avatar chrissunny94 avatar danielsnider avatar knickels avatar kostaskonkk avatar qboticslabs avatar robograffitti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

follow_waypoints's Issues

Saving Waypoints

Can anyone help me with saving waypoints in so that I can re-use them, and not having to set new waypoints everytime execute paths.

I know "rostopic pub /start_journey std_msgs/Empty -1" is to load a previously saved path but I don't know the command to save it in the first place.

/waypoints missing points

hi,
I created a topic: /waypoint_mark instead of /initialpose, and used rosbridge to communicate with /waypoint_mark to send point information to it, but found that /waypoints lost points(And, the first point information will be repeated).
btw,the point information received by topic /waypoint_mark is correct

Roslaunch error

I have installed using sudo apt and when I tried to launch this on my ROS Kinetic. This error occured.
[follow_waypoints.launch] is neither a launch file in package [follow_waypoints] nor is [follow_waypoints] a launch file name
The traceback for the exception was written to the log file.

Issue of no responding after roslaunch

Hi,

When I roslaunch the package, rviz has not been launched and it says 'connecting to move_base'. I have waited for a long time and still, nothing displayed as shown in the picture named troubleshoot. In addition, followed the tutorial at http://wiki.ros.org/follow_waypoints the fault output has occurred as shown in picture named troubleshoot 2. I am a newbie to ROS and currently I am still researching and learning. Please do help! Many thanks indeed.
troubleshoot 2
troubleshoot of follow_waypoints

Connection to move base sporadically failing

A lot of times, the SimpleActionClient fails to connect to move_base. This leads to the execution getting stuck on follow_waypoints.py:32 line.

While it is a similar issue to this it differs a bit since it is working sometimes and sometimes not.

If anyone has an idea of how to solve this please let me know!

//ArvidP

Potential vulnerability: topic names from ROS parameters

Hi,

We notice that you are using topic names from ROS parameters at the following locations:

self.poseArray_publisher = rospy.Publisher(self.posearray_topic, PoseArray, queue_size=1)

pose = rospy.wait_for_message(topic, PoseWithCovarianceStamped, timeout=1)

For security reasons detailed below, we strongly suggest avoiding the usage of strings from parameters as topic names.

Although parameters are usually set in parameter files, they can also be changed by nodes. Specifically, other nodes in the same ROS application can also change the parameters listed above before it’s used, either by accident or intentionally (i.e., by potential attackers). If the ~addpose_topic parameter is changed, the follow_waypoints node will listen to a wrong topic and cannot receive new waypoints. Moreover, if an attacker exists, she can even take full control of the victim robot by first fooling the follow_waypoints node to listen to a wrong topic like /initialpose_fake, and then forwarding all messages from /initialpose to /initialpose_fake after modifying the contents. She can also simply send whatever she wants to /initialpose_fake to move the robot to arbitrary positions. Because ROS is an OSS (open-source software) community, third-party nodes are widely used in ROS applications, usually without complete vetting of their behavior, which gives the opportunity to potentially malicious actors to inject malicious code (e.g, by submitting hypocrite commits like in other OSS systems [1]) to infiltrate the ROS applications that use it (or software supply chain attacks, one of the primary means for real-world attackers today [2]).

We understand that using parameters to set topic names brings flexibility. Still, for the purpose of security, we strongly suggest that you avoid such vulnerable programming patterns if possible. For example, to avoid the exposure of this specific vulnerability, you may consider alternatives like remapping, which is designed for configuring names when launching the nodes.

[1] Q. Wu and K. Lu, “On the feasibility of stealthily introducing vulnerabilities in open-source software via hypocrite commits,” 2021, https://linuxreviews.org/images/d/d9/OpenSourceInsecurity.pdf.
[2] Supply chain attacks are the hacker’s new favourite weapon. and the threat is getting bigger. https://www.zdnet.com/article/supply-chain-attacks-are-the-hackers-new-favourite-weapon-and-the-threat-is-getting-bigger/.

Persistent waypoints

Hello,

The package is working great. I can move to a list of waypoints, and cancel all when needed.

Can there be a toggle feature that makes the waypoints persistent: when it reaches the last waypoint, it automatically goes to the first waypoint and keeps going?

Thanks,
Nathan

cannot store position values to make robot work autonomously and getting error with get path when i launch the file

i am using irobot and was working on SLAM using gmapping, can someone help me how to save the waypoints in map so that my robot move autonomously by reading file which has stored positions in map. my map is the willow garage given in gazebo.
i am using these commands:
roscore
roslaunch gazebo_ros empty_world.launch
rosrun gazebo_ros spawn_model -file /home/h/catkin_ws/src/create/model-1_4.sdf -sdf -model create
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
rosrun tf static_transform_publisher args=0 0 0 0 0 0 /base_footprint /base_link 100
rosrun tf static_transform_publisher args=0 0 0 0 0 0 /base_link /base_laser 100
rviz
roslaunch gmapping slam_gmapping_myrob.launch
rosrun follow_waypoints follow_waypoints

errorwithwaypoint-getpath

Wait duration

I am able to run the package, but the robot stopped at each waypoint for about twenty seconds. I have checked that the wait duration is set to zero. I am using the jackal simulation package to simulate the robot in the gazebo. The waypoints are specified by using Rviz 2D Pose Estimate as suggested by the tutorial. Any idea why this is happening?

Thanks in advance for your help :)

InvalidUserCodeError: Could not execute state 'GET_PATH' of type '<follow_waypoints.follow_waypoints.GetPath object at 0x7fb6e5445460>'

Hey @danielsnider,
I have tried using this package with turtlebot3 as well as with husky (both in simulation), and I get the same error. I'm getting several errors and am not able to use the follow_waypoints pkg.
The gazebo simulation of the robot, as well as navigation (amcl and move_base) are running.
Following is the output when I launch the follow_waypoints file; Please let me know regarding any info you need and what the issue could be.
Thanks!


... logging to /home/tihan/.ros/log/3b86d18e-8be0-11ed-a8b3-b37391ca357c/roslaunch-tihanws3-13212.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://tihanws3:36413/

SUMMARY
========

CLEAR PARAMETERS
 * /follow_waypoints/

PARAMETERS
 * /follow_waypoints/addpose_topic: /initialpose
 * /follow_waypoints/goal_frame_id: map
 * /follow_waypoints/posearray_topic: /waypoints
 * /rosdistro: noetic
 * /rosversion: 1.15.15

NODES
  /
    follow_waypoints (follow_waypoints/follow_waypoints)

ROS_MASTER_URI=http://localhost:11311

process[follow_waypoints-1]: started with pid [13250]
[ DEBUG ] : Adding state (GET_PATH, <follow_waypoints.follow_waypoints.GetPath object at 0x7f4f82f3b820>, {'success': 'FOLLOW_PATH'})
[ DEBUG ] : Adding state 'GET_PATH' to the state machine.
[ DEBUG ] : State 'GET_PATH' is missing transitions: {}
[ DEBUG ] : TRANSITIONS FOR GET_PATH: {'success': 'FOLLOW_PATH'}
[INFO][139979559061312][/follow_waypoints/FollowPath.__init__:54]: Connecting to move_base...
[INFO][139979559061312][/follow_waypoints/FollowPath.__init__:56]: Connected to move_base.
[INFO][139979559061312][/follow_waypoints/FollowPath.__init__:57]: Starting a tf listner.
[ DEBUG ] : Adding state (FOLLOW_PATH, <follow_waypoints.follow_waypoints.FollowPath object at 0x7f4f82f3bd00>, {'success': 'PATH_COMPLETE'})
[ DEBUG ] : Adding state 'FOLLOW_PATH' to the state machine.
[ DEBUG ] : State 'FOLLOW_PATH' is missing transitions: {}
[ DEBUG ] : TRANSITIONS FOR FOLLOW_PATH: {'success': 'PATH_COMPLETE'}
[ DEBUG ] : Adding state (PATH_COMPLETE, <follow_waypoints.follow_waypoints.PathComplete object at 0x7f4f82ef63d0>, {'success': 'GET_PATH'})
[ DEBUG ] : Adding state 'PATH_COMPLETE' to the state machine.
[ DEBUG ] : State 'PATH_COMPLETE' is missing transitions: {}
[ DEBUG ] : TRANSITIONS FOR PATH_COMPLETE: {'success': 'GET_PATH'}
[  INFO ] : State machine starting in initial state 'GET_PATH' with userdata: 
	[]
[INFO][139979559061312][/follow_waypoints/GetPath.execute:177]: Waiting to recieve waypoints via Pose msg on topic /initialpose
[INFO][139979559061312][/follow_waypoints/GetPath.execute:178]: To start following waypoints: 'rostopic pub /path_ready std_msgs/Empty -1'
[INFO][139979559061312][/follow_waypoints/GetPath.execute:179]: OR
[INFO][139979559061312][/follow_waypoints/GetPath.execute:180]: To start following saved waypoints: 'rostopic pub /start_journey std_msgs/Empty -1'
[ ERROR ] : InvalidUserCodeError: Could not execute state 'GET_PATH' of type '<follow_waypoints.follow_waypoints.GetPath object at 0x7f4f82f3b820>': Traceback (most recent call last):
  File "/home/tihan/gps_ws/src/follow_waypoints/src/follow_waypoints/follow_waypoints.py", line 186, in execute
    pose = rospy.wait_for_message(topic, PoseWithCovarianceStamped, timeout=1)
  File "/opt/ros/noetic/lib/python3/dist-packages/rospy/client.py", line 419, in wait_for_message
    raise rospy.exceptions.ROSException("timeout exceeded while waiting for message on topic %s"%topic)
rospy.exceptions.ROSException: timeout exceeded while waiting for message on topic /initialpose

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/smach/state_machine.py", line 242, in _update_once
    outcome = self._current_state.execute(
  File "/home/tihan/gps_ws/src/follow_waypoints/src/follow_waypoints/follow_waypoints.py", line 188, in execute
    if 'timeout exceeded' in e.message:
AttributeError: 'ROSException' object has no attribute 'message'

Traceback (most recent call last):
  File "/home/tihan/gps_ws/src/follow_waypoints/src/follow_waypoints/follow_waypoints.py", line 186, in execute
    pose = rospy.wait_for_message(topic, PoseWithCovarianceStamped, timeout=1)
  File "/opt/ros/noetic/lib/python3/dist-packages/rospy/client.py", line 419, in wait_for_message
    raise rospy.exceptions.ROSException("timeout exceeded while waiting for message on topic %s"%topic)
rospy.exceptions.ROSException: timeout exceeded while waiting for message on topic /initialpose

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/smach/state_machine.py", line 242, in _update_once
    outcome = self._current_state.execute(
  File "/home/tihan/gps_ws/src/follow_waypoints/src/follow_waypoints/follow_waypoints.py", line 188, in execute
    if 'timeout exceeded' in e.message:
AttributeError: 'ROSException' object has no attribute 'message'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/tihan/gps_ws/devel/lib/follow_waypoints/follow_waypoints", line 15, in <module>
    exec(compile(fh.read(), python_script, 'exec'), context)
  File "/home/tihan/gps_ws/src/follow_waypoints/nodes/follow_waypoints", line 6, in <module>
    follow_waypoints.main()
  File "/home/tihan/gps_ws/src/follow_waypoints/src/follow_waypoints/follow_waypoints.py", line 225, in main
    outcome = sm.execute()
  File "/opt/ros/noetic/lib/python3/dist-packages/smach/state_machine.py", line 359, in execute
    container_outcome = self._update_once()
  File "/opt/ros/noetic/lib/python3/dist-packages/smach/state_machine.py", line 252, in _update_once
    raise smach.InvalidUserCodeError("Could not execute state '%s' of type '%s': " %
smach.exceptions.InvalidUserCodeError: Could not execute state 'GET_PATH' of type '<follow_waypoints.follow_waypoints.GetPath object at 0x7f4f82f3b820>': Traceback (most recent call last):
  File "/home/tihan/gps_ws/src/follow_waypoints/src/follow_waypoints/follow_waypoints.py", line 186, in execute
    pose = rospy.wait_for_message(topic, PoseWithCovarianceStamped, timeout=1)
  File "/opt/ros/noetic/lib/python3/dist-packages/rospy/client.py", line 419, in wait_for_message
    raise rospy.exceptions.ROSException("timeout exceeded while waiting for message on topic %s"%topic)
rospy.exceptions.ROSException: timeout exceeded while waiting for message on topic /initialpose

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/smach/state_machine.py", line 242, in _update_once
    outcome = self._current_state.execute(
  File "/home/tihan/gps_ws/src/follow_waypoints/src/follow_waypoints/follow_waypoints.py", line 188, in execute
    if 'timeout exceeded' in e.message:
AttributeError: 'ROSException' object has no attribute 'message'



Binary installation not working

I used "sudo apt-get ..." command to install this package. And it is not running out of the box.
The files that I can see in the /opt/ros/... location is just 'cmake' folder and package.xml. Also the roslaunch follow_waypoints is not producing anything after autocomplete.

how to increase delay for each point to point and i suppose to initiate gpio pin at the delay time

i recently working on ros, lidar based autonomous robot. I found your github based on ros which helped me to know more. I have a doubt that I'm using follow_waypoints to set the multiple point to point navigation. It works perfectly. Now I need to stop the motor for five minutes and activate one(or)more gpio pins for external purposes. is it possible to edit follow_waypoints src code to achieve this process.

how to add a robot

This is a very good repo, but I don't have any idea on how to add a robot.
I'm a newbie to this, can anyone help.

THANKS in advance

Tolerance Waypoints does not works

Hi I want to congrats you for the excellent work done, all the package works amazing!

I only have issue on waypoints tolerance because I don't want that the robot stops at each waypoints and also changing the value of tolerance the robot stops the same.

Can You help me in found some solution?
I would be grateful,
Lorenzo

Can't send waypoint on the remote side?

Hello, Mr.@danielsnider I am using the ros1 melodic version. When using the function package, I found that the robot runs commands on the remote end, and then opened rviz separately to issue the waypoint command. The topic here already corresponds, but it cannot be sent to the robot remotely. I don’t know. Where is the problem? It can be sent on the local end of the robot. Below is my configuration file:

`

    <env name="ROSCONSOLE_FORMAT" value="[${severity}][${thread}][${node}/${function}:${line}]: ${message}"/>
    <arg name="addpose_topic" default="/waypoint_marker "/>
    <arg name="posearray_topic" default="/waypoints"/>
   <arg name="wait_duration" default="0.3"/>
   <arg name="base_frame_id" default="base_link"/>
<node pkg="follow_waypoints" type="follow_waypoints" name="follow_waypoints" output="screen" clear_params="true">
  <param name="goal_frame_id" value="map"/>
  <param name="wait_duration" value="$(arg wait_duration)"/>
  <param name="base_frame_id" value="$(arg base_frame_id)"/>
  <param name="addpose_topic" value="$(arg addpose_topic)"/>
  <param name="posearray_topic" value="$(arg posearray_topic)"/>
</node>
`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.