Git Product home page Git Product logo

arbotix_ros's People

Contributors

calismurat avatar corot avatar croesmann avatar mikeferguson 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

Watchers

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

arbotix_ros's Issues

wxGCDC(cg)::SetTextBackground - invalid DC

On plain ROS-Melodic (Ubuntu 18.04) when executing

rosrun arbotix_python arbotix_gui

We get the following error

[INFO] [1617740796.278069]: No URDF defined, proceeding with defaults
Traceback (most recent call last):
File "/home/andrea/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_gui", line 205, in
frame = controllerGUI(None, True)
File "/home/andrea/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_gui", line 131, in init
self.onPaint()
File "/home/andrea/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_gui", line 160, in onPaint
dc = wx.PaintDC(self.movebase)
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk3/wx/_gdi.py", line 5130, in init
gdi.PaintDC_swiginit(self,gdi.new_PaintDC(*args, **kwargs))
wx._core.PyAssertionError: C++ assertion "IsOk()" failed at ../src/common/dcgraph.cpp(437) in SetTextBackground(): wxGCDC(cg)::SetTextBackground - invalid DC

Did gripper_controller.py get missed in latest Hydro debs?

Hey Fergs,

I've been using arbotix_ros from source (hydro-devel branch) and I am using gripper_controller.py for a one-sided gripper. This file appears to be missing in the latest Hydro debs which I just downloaded. Did you mean to leave it out of the Debian packages?

How to make trajectory execution smoother

I'm using MoveIt! and an ArbotiX 2 to drive a 6-dof Dynamixel arm (2 x RX-24, 4 x AX-12). Compared to the dynamixel_motor stack, the motion of the arm when executing a trajectory planned by MoveIt! is somewhat jerky--kind of a rat-a-tat-tat motion. Is there some way to make the motion smoother?

Building packages from source

Hello, I am trying to get this repo working in an anaconda environment (my system is Ubuntu 20.04 btw) with ros-noetic but unfortunately the version of ros-noetic-arbotix available on the robostack channel has a default device port of 'dev/ttyUSB0', which my system does not have. I have tried modifying my site-packages files but apparently python is using hard-coded binaries so none of the changes are being used. Is there any way for me to build these packages (arbotix_msgs, arbotix_python, etc.) from source so that I can change this port value to something more suitable? Thanks a bunch!

arbotix_terminal only supports max of 18 servos

I am trying out a new MX-28T servo and the arbotix_terminal app does not list its ID when issuing the 'ls' command, even when the servo is the only one on the bus. I am running the latest Debian version of the arbotix stack under ROS Hydro and Ubuntu 12.04.

joint_state publishing rate != read_rate

looks like the read_rate parameter is not being accurately followed.
for me, specifying a read_rate of 21.15 gives me an actual rate of 15 as measured by rostopic hz /joint_states

Can arbotix_python be made to delete existing /arbotix parameters?

When running the arbotix_python driver in succession with different robot configurations, the set of parameters under /arbotix can persist in between invocations and cause unwanted controllers to be launched or non-existent joints to show up in the controller GUI. Does it make sense to delete the /arbotix parameter tree at the beginning of the arbotix_python driver execution?

Kinetic release?

Is this waiting on anything for a kinetic release? I've been using it stably in my kinetic workspace for a while.

Odd start/stop behavior when following Cartesian path

I am using the Arbotix trajectory action controller in fake mode with a 6-dof arm to test the compute_cartesian_path() Python function in MoveIt. I set two waypoints in addition to the start pose and end pose (which are the same). The Arbotix trajectory controller does a nice job of following the straight line paths except at the beginning and end of the trajectory where it causes the gripper to do a little "zig-zag". If I run MoveIt in pure demo mode without the ArbotiX controller, the trajectories do not display this zig-zag.

Here is a video demonstrating the phenomenon.

https://www.youtube.com/watch?v=ns6jrEreruU

My test script is included below.

#!/usr/bin/env python

import rospy, sys
import moveit_commander
from moveit_commander import MoveGroupCommander
from geometry_msgs.msg import Pose
from copy import deepcopy

class MoveItDemo:
    def __init__(self):
        # Initialize the move_group API
        moveit_commander.roscpp_initialize(sys.argv)

        # Initialize the ROS node
        rospy.init_node('moveit_demo', anonymous=True)

        cartesian = rospy.get_param('~cartesian', True)

        # Connect to the right_arm move group
        right_arm = MoveGroupCommander('right_arm')

        # Allow replanning to increase the odds of a solution
        right_arm.allow_replanning(True)

        # Set the right arm reference frame
        right_arm.set_pose_reference_frame('base_footprint')

        # Allow some leeway in position(meters) and orientation (radians)
        right_arm.set_goal_position_tolerance(0.01)
        right_arm.set_goal_orientation_tolerance(0.1)

        # Get the name of the end-effector link
        end_effector_link = right_arm.get_end_effector_link()

        # Start in the "resting" configuration stored in the SRDF file
        right_arm.set_named_target('resting')

        # Plan and execute a trajectory to the goal configuration
        right_arm.go()
        rospy.sleep(2)

        # Remember this pose so we can add it as a waypoint
        resting_pose = right_arm.get_current_pose(end_effector_link).pose

        # Set the end pose to be the same as the resting pose
        end_pose = deepcopy(resting_pose)

        # Initialize the waypoints list
        waypoints = []

        # Set the first waypoint to be the starting pose
        wpose = deepcopy(resting_pose)

        if cartesian:
            # Append the pose to the waypoints list
            waypoints.append(deepcopy(wpose))

        # Set the next waypoint forward and up
        wpose.position.x += 0.2
        wpose.position.z += 0.2

        if cartesian:
            # Append the pose to the waypoints list
            waypoints.append(deepcopy(wpose))
        else:
            right_arm.set_pose_target(wpose)
            right_arm.go()
            rospy.sleep(2)

        # Set the next waypoint to the right
        wpose.position.x -= 0.195701
        wpose.position.y -= 0.18997
        wpose.position.z += 0.02914

        if cartesian:
            # Append the pose to the waypoints list
            waypoints.append(deepcopy(wpose))
        else:
            right_arm.set_pose_target(wpose)
            right_arm.go()
            rospy.sleep(2)

        # Set the final pose to be the resting pose
        wpose = deepcopy(end_pose)

        if cartesian:
            # Append the pose to the waypoints list
            waypoints.append(deepcopy(wpose))
        else:
            right_arm.set_pose_target(wpose)
            right_arm.go()
            rospy.sleep(2)

        fraction = 0.0
        maxtries = 500
        attempts = 0

        right_arm.set_start_state_to_current_state()

        # Plan the Carteisan path connecting the waypoints
        while fraction < 1.0 and attempts < maxtries:
            (plan, fraction) = right_arm.compute_cartesian_path (
                                    waypoints,   # waypoints to follow
                                    0.01,        # eef_step
                                    0.0)        # jump_threshold            
            attempts += 1
            if attempts % 100 == 0:
                rospy.loginfo("Still trying after " + str(attempts) + " attempts...")

        # Plan and execute a trajectory to the goal configuration
        if fraction == 1.0:
            rospy.loginfo("Path computed successfully.  Moving the arm.")  
            right_arm.execute(plan)
        else:
            rospy.loginfo("Path planning failed with only " + str(fraction) + " success after " + str(maxtries) + " attempts.")  

        # Shut down MoveIt cleanly
        moveit_commander.roscpp_shutdown()

        # Exit MoveIt
        moveit_commander.os._exit(0)

if __name__ == "__main__":
    try:
        MoveItDemo()
    except rospy.ROSInterruptException:
        pass

The actual arm is not moving by using arbotix_gui

I run arbotix_terminal and I detect my five servos
Then, I run roslaunch turtlebot_arm_bringup arm.launch until I see [INFO] [1506951666.556013]: ArbotiX connected. Then, I run

abdulrahman@abdulrahman-ThinkPad-X230-Tablet:~$ arbotix_gui 
/home/abdulrahman/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_gui:203: wxPyDeprecationWarning: Using deprecated class PySimpleApp. 
  app = wx.PySimpleApp()

I get the window with five joints.

But I can NOT move the actual arm by using arbotix_gui any help please ????

Joint motions not synchronous during trajectory execution

I'm using arbotix_ros with a USB2Dynamixel controller (I fried my ArbotiX) and a 6-dof Dynamixel arm with two MX-28T's in the shoulder joints and AX-12s at the other joints. When I use MoveIt to plan and execute a trajectory, the motion of the arm is correct except the servos do not stop moving at the same time. For example, if I move the arm to the "resting" position with the arm hanging straight down, the shoulder servos can finish their motion before the elbow and wrist servos. Is this expected behavior? Or should all servos reach their target positions at the same time?

My setup: ROS Hydro Debian packages for arbotix and Ubuntu 12.04.

Add new boolean "enable" service for each servo

It would be nice to have a new boolean "enable" service that could be used to enable or disable a servo controller. The idea is that if the servo is disabled ("enable false") then subsequent position requests would be ignored. This is different from the existing relax service since position commands sent after a servo is relaxed automatically re-enable torque and move the servo.

Motivation: I am trying to build in some better servo overheating protection when using MoveIt for extended periods of time. I have a node that will monitor servo temperatures (e.g. using /diagnostics) and will disable a servo if a temperature threshold is exceeded. It will then re-enable the servo when the temperature falls below a second threshold. I can't use the existing relax service for this purpose for the reasons above. Using mux gets messy when dealing with so many individual controllers and I don't think mux can be made to work with MoveIt anyway.

Unable to install...

Any idea why:

 sudo apt-get install ros-indigo-arbotix-*
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package ros-indigo-arbotix-*
E: Couldn't find any package by glob 'ros-indigo-arbotix-*'
E: Couldn't find any package by regex 'ros-indigo-arbotix-*'
pitosalas@ubuntu:~$ 

( modified by adding -* because I had misread instructions. But still doesn't work..)

Install from source on Raspberry-Pi 4

Hello!

Is it possible to install arbotix_ros package in Raspberry-Pi 4 from source?
What is the proper pipeline that I should follow in order to install the package from source (even if it is not an RPI-4)?

Thank you in advance!

PS. I have tried to install the package using the sudo apt-get install ros-noetic-arbotix on RPI-4 but it didn't work, although it worked just fine on my laptop.

follow_controller not reacting on STOP command of MoveIt

When I execute a trajectory in MoveIt RViz and press the stop button the motion of the robot arm doesn't stop. The console sais that the motion is stoped but in reality the motion is done until the destination is reached. I tried adding a

stop_trajectory_duration: 0.5

in my .yaml file but without success. Here is the output of the console:

Screenshot from 2019-08-23 15-57-35

How can I stop a executed trajectory in the follow_controller?

I can not detect my servos (dynamixel ax-12a)

Hi
I am using ros indigo and ubuntu 14.04. I have Phantomx Pincher arm connected to the computer via FTDI USB cable.

I clone arbotix and I did catkin_make properly.

BUT I can not detect my servos (dynamixel ax-12a) thru arbotix, I am getting the following output,

anyone can help me please ??

I even tried arbotix_gui I got the window but the servos don't move.

imr@IMR-PC:~$ sudo chmod 777 /dev/ttyUSB0
[sudo] password for imr: 
imr@IMR-PC:~$ arbotix_terminal
ArbotiX Terminal --- Version 0.1
Copyright 2011 Vanadium Labs LLC
>>  ls
.... .... .... .... .... .... .... .... .... 
.... .... .... .... .... .... .... .... .... 
>>  ls
.... .... .... .... .... .... .... .... .... 
.... .... .... .... .... .... .... .... .... 
>>  ls
.... .... .... .... .... .... .... .... .... 
.... .... .... .... .... .... .... .... .... 
>>  ls
.... .... .... .... .... .... .... .... .... 
.... .... .... .... .... .... .... .... .... 
>>  

HELP on maintaining arbotix_ros repo

Hi @mikeferguson, it seems to me that you have no time at all to maintain this repo; would you like some help?

I have notice that people (me included) are developing their own forks, wasting time on duplicated effort. I'll have some time in the following weeks, so I can at least help merging my changes and those from @croesmann.

Particularly, the gripper controller need a proper action server that waits for reached position. At least @croesmann and me did that in our forks.

How to get fake joint speeds in joint_state message when using 'sim' mode

It appears that the joint_state message published by arbotix_python when in 'sim' mode is always 0 for each joint. I was wondering what changes I would have to make to the code to publish a fake speed based on the previous and current fake positions? I ask because I think having all-zero speeds may be affecting trajectory execution when working with MoveIt and a fake arm.

Motor Ignores max_speed when plugged back in

Here's a video demonstrating the issue:
https://youtu.be/Ed6hL4YUrWk

max_speed is set to 45 in a YAML file, and the motor typically follows this, but it ignores the limit if the turret is unplugged, moved, and plugged back in. The video shows it moving normally once, and then moving fast while ignoring max_speed.

I used this command to move the turret:
rostopic pub --once /projector/projector_servo_pan_joint/command std_msgs/Float64 "data: -1.57"

As the command suggests, the turret typically has a projector attached to it, which is why it moves once it is unplugged, and also the reason why it moving too fast could be problematic.

ModuleNotFoundError: No module named 'ax12'. when i "roslaunch mrobot_description arbotix_mrobot_with_kinect.launch "

g@g:~/catkin_ws$ roslaunch mrobot_description arbotix_mrobot_with_kinect.launch ... logging to /home/g/.ros/log/0767860a-efe0-11e8-a5fc-2cfda1bc2526/roslaunch-g-10554.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://g:40353/

SUMMARY

PARAMETERS

  • /arbotix/controllers/base_controller/Kd: 12
  • /arbotix/controllers/base_controller/Ki: 0
  • /arbotix/controllers/base_controller/Ko: 50
  • /arbotix/controllers/base_controller/Kp: 12
  • /arbotix/controllers/base_controller/accel_limit: 1.0
  • /arbotix/controllers/base_controller/base_frame_id: base_footprint
  • /arbotix/controllers/base_controller/base_width: 0.26
  • /arbotix/controllers/base_controller/ticks_meter: 4100
  • /arbotix/controllers/base_controller/type: diff_controller
  • /arbotix/sim: True
  • /robot_description: <?xml version="1....
  • /robot_state_publisher/publish_frequency: 20.0
  • /rosdistro: kinetic
  • /rosversion: 1.12.14
  • /use_gui: False
  • /use_sim_time: False

NODES
/
arbotix (arbotix_python/arbotix_driver)
joint_state_publisher (joint_state_publisher/joint_state_publisher)
robot_state_publisher (robot_state_publisher/robot_state_publisher)
rviz (rviz/rviz)

auto-starting new master
process[master]: started with pid [10567]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 0767860a-efe0-11e8-a5fc-2cfda1bc2526
process[rosout-1]: started with pid [10580]
started core service [/rosout]
process[arbotix-2]: started with pid [10598]
process[joint_state_publisher-3]: started with pid [10599]
process[robot_state_publisher-4]: started with pid [10600]
process[rviz-5]: started with pid [10601]
Traceback (most recent call last):
File "/home/g/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_driver", line 36, in
from arbotix_python.arbotix import ArbotiX, ArbotiXException
File "/home/g/catkin_ws/src/arbotix_ros/arbotix_python/src/arbotix_python/arbotix.py", line 34, in
from ax12 import *
ModuleNotFoundError: No module named 'ax12'
[arbotix-2] process has died [pid 10598, exit code 1, cmd /home/g/catkin_ws/src/arbotix_ros/arbotix_python/bin/arbotix_driver __name:=arbotix __log:=/home/g/.ros/log/0767860a-efe0-11e8-a5fc-2cfda1bc2526/arbotix-2.log].
log file: /home/g/.ros/log/0767860a-efe0-11e8-a5fc-2cfda1bc2526/arbotix-2*.log
================================================================================REQUIRED process [rviz-5] has died!
process has finished cleanly
log file: /home/g/.ros/log/0767860a-efe0-11e8-a5fc-2cfda1bc2526/rviz-5*.log
Initiating shutdown!

[rviz-5] killing on exit
[joint_state_publisher-3] killing on exit
[robot_state_publisher-4] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

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.