Code Monkey home page Code Monkey logo

mpc_path_follower_ros's Introduction

MPC path follower based on ros navigation stack

Abstract

MPC path follower, Using ros navigation stack, Working with move_base, Not stable version Currently, it only can follow global path with small curve.

About us

Developer:

  • Will, zhang
    Date: 2019.07.18

Features

  • Nonlinear Bicycle Model Based MPC (through ipopt solver)
  • Based on ros navigation

References

Dependency

  1. Install ROS Kinetic (Desktop-Full) (http://wiki.ros.org/kinetic/Installation/Ubuntu)
  2. Install dependencies:
    $ sudo apt-get install remmina synaptic gimp git ros-kinetic-navigation* ros-kinetic-gmapping ros-kinetic-ackermann-msgs ros-kinetic-turtlebot*-y
  3. Install Ipopt: Please refer (https://github.com/udacity/CarND-MPC-Project/blob/master/install_Ipopt_CppAD.md)
  4. create your own catkin_ws
    (http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment#Create_a_ROS_Workspace)
  5. cd catkin_ws/src
  6. git clone https://github.com/yinzixuan126/mpc_path_follower_ros
  7. cd ..
  8. catkin_make

Operation

Simulation

  • ---to launch turtlebot gazebo
  • roslaunch turtlebot_gazebo turtlebot_world.launch
  • ---to launch mpc path follower
  • roslaunch mpc_path_follower mpc_test.launch
  • ---to launch rviz
  • roslaunch mpc_path_follower view_navigation.launch

mpc_path_follower_ros's People

Contributors

yinzixuan126 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

Watchers

 avatar  avatar  avatar

mpc_path_follower_ros's Issues

When I set 2D Nav Goal,it will show some errors.

When I set 2D Nav Goal,it will show that mpc_ref_path "Message contained invalid floating point values (nans or infs)" in rviz.AND in the terminal , it shows "[FATAL] [1569572623.954154195, 372.960000000]: Received a transformed plan with 26 points.
[move_base-3] process has died [pid 21266, exit code -11, cmd /opt/ros/kinetic/lib/move_base/move_base cmd_vel:=/mobile_base/commands/velocity odom:=odom scan:=scan __name:=move_base __log:=/home/xkk/.ros/log/3c49e654-e0ff-11e9-b83e-a088696e50eb/move_base-3.log].
log file: /home/xkk/.ros/log/3c49e654-e0ff-11e9-b83e-a088696e50eb/move_base-3*.log"

编译报错

[ 50%] Building CXX object mpc_path_follower_ros/CMakeFiles/mpc_path_follower.dir/src/mpc_path_follower_ros.cpp.o
In file included from /home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:9:0:
/home/qyc/mpc_ws/src/mpc_path_follower_ros/include/mpc_path_follower/mpc_path_follower_ros.h:39:43: error: ‘tf’ has not been declared
void initialize(std::string name, tf::TransformListener* tf,
^~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/include/mpc_path_follower/mpc_path_follower_ros.h:39:64: error: expected ‘,’ or ‘...’ before ‘’ token
void initialize(std::string name, tf::TransformListener
tf,
^
/home/qyc/mpc_ws/src/mpc_path_follower_ros/include/mpc_path_follower/mpc_path_follower_ros.h:103:9: error: ‘tf’ does not name a type; did you mean ‘Lf’?
tf::TransformListener* tf_; ///< @brief Used for transforming point clouds
^~
Lf
/home/qyc/mpc_ws/src/mpc_path_follower_ros/include/mpc_path_follower/mpc_path_follower_ros.h:104:9: error: ‘tf’ does not name a type; did you mean ‘Lf’?
tf::TransformListener tf_listener;
^~
Lf
/home/qyc/mpc_ws/src/mpc_path_follower_ros/include/mpc_path_follower/mpc_path_follower_ros.h:116:9: error: ‘tf’ does not name a type; did you mean ‘Lf’?
tf::Stampedtf::Pose current_pose
;
^~
Lf
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:22:44: error: ‘tf’ has not been declared
tf::TransformListener tf,
^~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:22:66: error: expected ‘,’ or ‘...’ before ‘
’ token
tf::TransformListener tf,
^
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp: In member function ‘void mpc_path_follower::MpcPathFollowerRos::initialize(std::cxx11::string, int)’:
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:34:13: error: ‘tf
’ was not declared in this scope
tf
= tf;
^~~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:34:19: error: ‘tf’ was not declared in this scope
tf_ = tf;
^~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:34:19: note: suggested alternative: ‘Lf’
tf_ = tf;
^~
Lf
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:35:28: error: ‘costmap_ros’ was not declared in this scope
costmap_ros_ = costmap_ros;
^~~~~~~~~~~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:35:28: note: suggested alternative: ‘costmap_ros_’
costmap_ros_ = costmap_ros;
^~~~~~~~~~~
costmap_ros_
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:36:40: error: ‘current_pose_’ was not declared in this scope
costmap_ros_->getRobotPose(current_pose_);
^~~~~~~~~~~~~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp: In member function ‘virtual bool mpc_path_follower::MpcPathFollowerRos::computeVelocityCommands(geometry_msgs::Twist&)’:
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:57:43: error: ‘current_pose_’ was not declared in this scope
if ( ! costmap_ros_->getRobotPose(current_pose_)) {
^~~~~~~~~~~~~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:62:43: error: ‘current_pose_’ was not declared in this scope
if ( ! planner_util_.getLocalPlan(current_pose_, transformed_plan)) {
^~~~~~~~~~~~~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp: In member function ‘bool mpc_path_follower::MpcPathFollowerRos::mpcComputeVelocityCommands(std::vector<geometry_msgs::PoseStamped_<std::allocator > >&, geometry_msgs::Twist&)’:
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:98:9: error: ‘tf’ has not been declared
tf::Stampedtf::Pose robot_vel;
^~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:98:21: error: ‘tf’ has not been declared
tf::Stampedtf::Pose robot_vel;
^~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:98:31: error: ‘robot_vel’ was not declared in this scope
tf::Stampedtf::Pose robot_vel;
^~~~~~~~~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:101:59: error: ‘tf’ has not been declared
robot_vel.getOrigin().getY(), tf::getYaw(robot_vel.getRotation()));
^~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:120:9: error: ‘tf’ has not been declared
tf::Pose pose;
^~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:121:9: error: ‘tf’ has not been declared
tf::poseMsgToTF(odom.pose.pose, pose);
^~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:121:41: error: ‘pose’ was not declared in this scope
tf::poseMsgToTF(odom.pose.pose, pose);
^~~~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:121:41: note: suggested alternative: ‘powh’
tf::poseMsgToTF(odom.pose.pose, pose);
^~~~
powh
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:122:22: error: ‘tf’ has not been declared
double psi = tf::getYaw(pose.getRotation());
^~
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp: In member function ‘virtual bool mpc_path_follower::MpcPathFollowerRos::isGoalReached()’:
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:241:43: error: ‘current_pose_’ was not declared in this scope
if ( ! costmap_ros_->getRobotPose(current_pose_)) {
^~~~~~~~~~~~~
In file included from /opt/ros/melodic/include/class_loader/class_loader_core.hpp:47:0,
from /opt/ros/melodic/include/class_loader/class_loader.hpp:46,
from /opt/ros/melodic/include/class_loader/multi_library_class_loader.hpp:42,
from /opt/ros/melodic/include/pluginlib/class_loader.hpp:38,
from /opt/ros/melodic/include/costmap_2d/costmap_2d_ros.h:50,
from /opt/ros/melodic/include/nav_core/base_local_planner.h:42,
from /home/qyc/mpc_ws/src/mpc_path_follower_ros/include/mpc_path_follower/mpc_path_follower_ros.h:16,
from /home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:9:
/opt/ros/melodic/include/class_loader/meta_object.hpp: In instantiation of ‘B
class_loader::impl::MetaObject<C, B>::create() const [with C = mpc_path_follower::MpcPathFollowerRos; B = nav_core::BaseLocalPlanner]’:
/home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:289:2: required from here
/opt/ros/melodic/include/class_loader/meta_object.hpp:196:12: error: invalid new-expression of abstract class type ‘mpc_path_follower::MpcPathFollowerRos’
return new C;
^~~~~
In file included from /home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:9:0:
/home/qyc/mpc_ws/src/mpc_path_follower_ros/include/mpc_path_follower/mpc_path_follower_ros.h:23:11: note: because the following virtual functions are pure within ‘mpc_path_follower::MpcPathFollowerRos’:
class MpcPathFollowerRos : public nav_core::BaseLocalPlanner{
^~~~~~~~~~~~~~~~~~
In file included from /home/qyc/mpc_ws/src/mpc_path_follower_ros/include/mpc_path_follower/mpc_path_follower_ros.h:16:0,
from /home/qyc/mpc_ws/src/mpc_path_follower_ros/src/mpc_path_follower_ros.cpp:9:
/opt/ros/melodic/include/nav_core/base_local_planner.h:78:20: note: virtual void nav_core::BaseLocalPlanner::initialize(std::__cxx11::string, tf2_ros::Buffer*, costmap_2d::Costmap2DROS*)
virtual void initialize(std::string name, tf2_ros::Buffer* tf, costmap_2d::Costmap2DROS* costmap_ros) = 0;
^~~~~~~~~~
mpc_path_follower_ros/CMakeFiles/mpc_path_follower.dir/build.make:62: recipe for target 'mpc_path_follower_ros/CMakeFiles/mpc_path_follower.dir/src/mpc_path_follower_ros.cpp.o' failed
make[2]: *** [mpc_path_follower_ros/CMakeFiles/mpc_path_follower.dir/src/mpc_path_follower_ros.cpp.o] Error 1
CMakeFiles/Makefile2:1405: recipe for target 'mpc_path_follower_ros/CMakeFiles/mpc_path_follower.dir/all' failed
make[1]: *** [mpc_path_follower_ros/CMakeFiles/mpc_path_follower.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j16 -l16" failed

how to move turtlebot?

I want to know how to run this.I have start launch those files,but the turtlebot does not move .

can not install ipopt

Call install_ipopt.sh with the source directory as the first argument, ex: ./install_ipopt.sh Ipopt-3.12.7 or bash install_ipopt.sh Ipopt-3.12.7
and it shows:
bash: ./install_ipopt.sh: There is no file or directory.

I met a problem, I am looking forward to your reply.

when I executed the second step:sudo apt-get install remmina synaptic gimp git ros-kinetic-navigation* ros-kinetic-gmapping ros-kinetic-ackermann-msgs ros-kinetic-turtlebot*-y
the errors appeared:注意,根据Glob 'ros-kinetic-navigation*' 选中了 'ros-kinetic-navigation'
注意,根据Glob 'ros-kinetic-navigation*' 选中了 'ros-kinetic-navigation-stage'
注意,根据Glob 'ros-kinetic-navigation*' 选中了 'ros-kinetic-navigation-tutorials'
注意,根据Glob 'ros-kinetic-navigation*' 选中了 'ros-kinetic-navigation-experimental'
注意,根据Glob 'ros-kinetic-navigation*' 选中了 'ros-kinetic-navigation-layers'
E: 无法定位软件包 ros-kinetic-turtlebot*-y
E: 无法按照 glob ‘ros-kinetic-turtlebot*-y’ 找到任何软件包
E: 无法按照正则表达式 ros-kinetic-turtlebot*-y 找到任何软件包

when i add it as a local planner in move_base


This program contains Ipopt, a library for large-scale nonlinear optimization.
Ipopt is released as open source code under the Eclipse Public License (EPL).
For more information visit http://projects.coin-or.org/Ipopt


cppad-20160000.1 error from a known source:
yq = f.Forward(q, xq): a zero order Taylor coefficient is nan.
Corresponding independent variables vector was written to binary a file.
vector_size = 158
file_name = /tmp/fileEuPtGw
index = 0

Error detected by false result for
if( CppAD::isnan( yq[ (q+1) * index + 0 ] )
at line 224 in the file
/usr/include/cppad/local/forward.hpp
move_base: /usr/include/cppad/utility/error_handler.hpp:207: static void CppAD::ErrorHandler::Default(bool, int, const char*, const char*, const char*): Assertion `false' failed.

how to sovle it?

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.