Ask Your Question

Anthony Brooks's profile - activity

2017-05-02 11:42:40 -0500 received badge  Famous Question (source)
2016-07-29 08:21:45 -0500 received badge  Famous Question (source)
2016-01-01 09:17:21 -0500 received badge  Famous Question (source)
2015-12-02 13:59:27 -0500 received badge  Famous Question (source)
2015-11-19 05:36:53 -0500 received badge  Famous Question (source)
2015-09-26 03:11:13 -0500 received badge  Famous Question (source)
2015-06-24 15:19:32 -0500 received badge  Notable Question (source)
2015-06-18 03:14:08 -0500 received badge  Notable Question (source)
2015-06-11 03:31:19 -0500 received badge  Notable Question (source)
2015-06-11 03:31:19 -0500 received badge  Popular Question (source)
2015-05-28 23:04:37 -0500 received badge  Notable Question (source)
2015-05-27 04:47:07 -0500 received badge  Popular Question (source)
2015-05-25 08:30:24 -0500 received badge  Notable Question (source)
2015-05-12 13:04:51 -0500 received badge  Notable Question (source)
2015-05-12 13:02:44 -0500 received badge  Popular Question (source)
2015-05-12 11:30:33 -0500 asked a question controller and ros manager

hello everyone : I am using the ros controller , and I have wrote a controller and a controller manager , but when I want to load the controller to ros manager , I get some problem:

[ERROR] [1431447499.444484032]: Could not load class drive_controller/DriveController: Failed to load library /home/exbot/Documents/ROS/control_error/devel/lib//libdrive_controller.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = /home/exbot/Documents/ROS/control_error/devel/lib//libdrive_controller.so: undefined symbol: _ZTVN16drive_controller15DriveControllerE)
[ERROR] [1431447499.444575741]: Could not load controller 'exp_drive_controller' because controller type 'drive_controller/DriveController' does not exist.
[ERROR] [1431447499.444601932]: Use 'rosservice call controller_manager/list_controller_types' to get the available types

[ERROR] [WallTime: 1431447500.445374] Failed to load exp_drive_controller

and this is drive_controller's CMakeLists.txt:

  cmake_minimum_required(VERSION 2.8.3)
project(drive_controller)

find_package(catkin REQUIRED COMPONENTS
  controller_interface
  hardware_interface
  realtime_tools
  roscpp
  pluginlib
  rospy
  tf
  urdf
)

 find_package(Boost REQUIRED COMPONENTS system)


catkin_package(
  INCLUDE_DIRS include
  LIBRARIES drive_controller
  CATKIN_DEPENDS controller_interface hardware_interface realtime_tools roscpp rospy tf urdf
  DEPENDS system_lib
)

include_directories(include)
include_directories(
  ${catkin_INCLUDE_DIRS}
)

 add_library(${PROJECT_NAME}
   src/drive_controller.cpp
 )

 target_link_libraries(${PROJECT_NAME}
   ${catkin_LIBRARIES}
 )

 install(TARGETS ${PROJECT_NAME}
   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
 )


 install(DIRECTORY include/${PROJECT_NAME}/
   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
   FILES_MATCHING PATTERN "*.h"
   PATTERN ".svn" EXCLUDE
 )

 install(FILES
   driver_controller.xml
   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
 )

and this is the xml for the plugin:

    <library path="lib/libdrive_controller">
  <class name="drive_controller/DriveController" type="drive_controller::DriveController" base_class_type="controller_interface::ControllerBase">
    <description>

    </description>
  </class>

</library>

and this my manager's .launch file:

    <launch>
    <rosparam file="$(find exp_hardware)/config/exp_controller.yaml" command="load"/>
    <node name="spawner" pkg="controller_manager" type="spawner" args="exp_drive_controller " respawn="false"/>
    <node name="exp_hard_soft" pkg="exp_hardware" type="exp_hardware" output="screen"/>
</launch>

and this is my manager's yaml file:

    exp_drive_controller:
 type: "drive_controller/DriveController"
 left_wheel_name: 'left_wheel'
 right_wheel_name: 'right_wheel'

the code for the drive controller is :

#include <geometry_msgs/Twist.h>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
#include <controller_interface/controller.h>
#include <hardware_interface/joint_command_interface.h>
#include <pluginlib/class_list_macros.h>
#include <tf/tfMessage.h>
#include <realtime_tools/realtime_buffer.h>
#include <realtime_tools/realtime_publisher.h>
#include <string>

using namespace std ;
using namespace controller_interface ;

typedef struct
{
    double linear_x_vel ;
    double angular_vel ;
    ros::Time current_time ;
}Commands ;

namespace drive_controller {
class DriveController:
       public Controller<hardware_interface::VelocityJointInterface>
{
public:
    DriveController() ;
    ~DriveController();
    bool init(hardware_interface::VelocityJointInterface *hw,
              ros::NodeHandle &root_nh,
              ros::NodeHandle &controller_nh);
    void update(const ros::Time &time, const ros::Duration &period);
    void starting(const ros::Time &time) ;
    void stopping(const ros::Time &time) ;
protected:
private:
    double wheel_radius_ ;
    double wheel_separation_ ;
    string left_wheel_name ;
    string right_wheel_name ;
    string name_ ;

    double cmd_vel_timeout ;

    hardware_interface::JointHandle left_wheel_joint ;
    hardware_interface::JointHandle right_wheel_joint ;
    realtime_tools::RealtimeBuffer<Commands> realtime_commands ;
    Commands current_command ;
    Commands last_command ;

    ros::Subscriber cmd_vel_sub ;
   // ros::Time last_state_time_ ;
    enum {STARTING , STOPPING , RUNNING} STATE ;
private:
     void cmdvelCallBack(const geometry_msgs::TwistConstPtr ptr) ;
     bool getWheelNames(ros::NodeHandle& controller_nh,
             const std::string& wheel_param,
             std::string& wheel_name);
     void brake() ;
};
}


#include <drive_controller/drive_controller.h>
#include <boost/make_shared.hpp>
#include <pluginlib/class_list_macros.h>

namespace drive_controller {
DriveController::DriveController()
{
    wheel_radius_ = 0.9 ;
    wheel_separation_ = 1.2;
    current_command.angular_vel = 0 ;
    current_command.linear_x_vel  = 0 ;
    current_command.current_time.init ...
(more)
2015-05-11 10:00:39 -0500 received badge  Famous Question (source)
2015-04-01 04:23:02 -0500 asked a question some problem about the hector exploration control

Hello everyone:

I am trying to use hector navigation stack on my wheeled robot , and the package I used is :

hector_costmap,

hector_exploration_node,

hector_elevation_mapping

hector_exploration_controller.

After running these package , I could see the path in the rviz , but My robot tends to just rotating along z-axis (perpendicular to the ground) almost all of the time. May I know what did I do wrongly?

edit:the turning speed is 0.4m/s the moving speed is 0.15m/s. The lidar I used is URG-04LX-UG01

Here is my hector_mapping.launch(start the hector_slam): <launch>

<node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">

<param name="pub_map_odom_transform" value="true"/>

<param name="map_frame" value="map" />

<param name="base_frame" value="base_link" />

<param name="odom_frame" value="base_link" />

<param name="base_frame" value="base_stabilized" />

<param name="odom_frame" value="base_stabilized" />

<!-- Map size / start point -->

<param name="map_resolution" value="0.010"/>

<param name="map_size" value="2048"/>

<param name="map_start_x" value="0.5"/>

<param name="map_start_y" value="0.5" />

<param name="laser_z_min_value" value="-2.5" />

<param name="laser_z_max_value" value="7.5" />

<!-- Map update parameters -->

<param name="update_factor_free" value="0.4"/>

<param name="update_factor_occupied" value="0.7" />

<param name="map_update_distance_thresh" value="0.002"/>

<param name="map_update_angle_thresh" value="0.006" />

</node>

<param name="laser_min_dist" value="0.02" />

<param name="laser_max_dist" value="5.6" />

<param name="map_pub_period" value="0.5" />

<node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser 100" />

&lt;node pkg="hector_imu_attitude_to_tf" type="imu_attitude_to_tf_node" name="imu_attitude_to_tf_node" output="screen"&gt;

&lt;remap from="imu_topic" to="thumper_imu" /&gt;

&lt;param name="base_stabilized_frame" type="string" value="base_stabilized" /&gt;

&lt;param name="base_frame" type="string" value="base_footprint" /&gt;

</node>

</launch>

Can anybody help me?Thanks a lot

2015-03-30 02:16:21 -0500 received badge  Popular Question (source)
2015-03-28 06:04:01 -0500 commented answer some question about the frame of the hector slam

thanks,it help me a lot.

2015-03-27 12:14:05 -0500 asked a question some question about the frame of the hector slam

Hello everyone:

I am studying the hector slam . I have some questions when I watch the some example about the .launch file: 1.what is the base_stabilized frame ? 2.what is the scan_matcher frame ? Is there some special affect for them?

Thanks in advance:)

2015-03-23 13:47:00 -0500 received badge  Popular Question (source)
2015-03-23 02:34:32 -0500 received badge  Editor (source)
2015-03-23 02:34:10 -0500 asked a question how to mark a special thing in a occupy map?

Hello everyone:

I am making a 'DIY' robot , now I want to mark some special mark (red dot......)in the occupy map (made by SLAM) when I found some special things from the usb_cam. Could anybody give me some advise ,thanks a lot .

2015-03-22 01:30:30 -0500 asked a question hector slam and the hector_costmap,planer

hello everyone:

I am studying the hector_slam , and I got some problem : I have successful use the hector_mapping and the geotiff to get a map , and now I want to use the hector_costmap and hector_exploration_planner,controller (just like the robcup rescue) , but I have no ideas how to do it , can anybody give me some advise ?

2015-03-09 09:46:58 -0500 received badge  Popular Question (source)
2015-03-09 01:31:50 -0500 answered a question how to double the resolution of the map ?

I don't know what you want to do , but you can change the resolution in the .world file , and use it in stage_ros , hope it can help you .

By the way, could you tell me more information about yourself ? I am in xi an ,too.

2015-03-09 01:07:21 -0500 commented question about the rqt_pose_view

Thanks for you answer , I found that I did not drag topic on the plugin of pose_view , after dragging , everything has been ok.

2015-03-07 21:21:34 -0500 answered a question how to generate odometry with slam?

generally speaking , you could not use the navigation stack without odometry
I hope this picture could help you: image description

you could see there is odometry pass into the move_base

2015-03-07 20:44:55 -0500 asked a question about the rqt_pose_view

hello every one:

I am learning to use rqt_pose_view, but I get some problem , I just follow this website wiki.ros.org/rqt_pose_view to test it ,but there is no change with the pose_view showing , then I used the command rostopic list, but I find nothing about the pose message . Could anyone tell me how to use the pose_view to show the pose of robot or which topic the is subscribed by the rqt_pose_view ?

Thanks

2015-03-01 05:57:09 -0500 received badge  Enthusiast
2015-02-24 07:19:25 -0500 received badge  Notable Question (source)
2015-02-24 04:49:16 -0500 commented answer qt app and ros

Thanks for your reply , I will just try your advise.

2015-02-24 01:52:23 -0500 received badge  Popular Question (source)
2015-02-23 21:11:48 -0500 commented question qt app and ros

Thank you , I have awared this just now , but I also would like to know : are there some plugins in rqt that could get the laser scanning map and display it in real-time ? (not rviz) So can you give me some advise?