Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
0c4044b
[desig] prettier pretty-printer for designators
gaya- Aug 10, 2022
0b1f52e
[btr-belief] OBJECT-IN-HAND should not return :left-or-right as hand …
gaya- Aug 17, 2022
7b8398c
[kdl_service] in 20.04 python_orocos_kdl became a Debian non-ROS pack…
gaya- Aug 22, 2022
84d89e5
GRASPS and DOOR-JOINT-POSE properties for environment manipulation
Aug 22, 2022
98c04c2
[cram_tf] *robot-arm-wrist-frame* global var
Aug 22, 2022
0c69714
[giskard] tiago stuff and commented out align planes
Aug 22, 2022
ef4fed9
[giskard] making goals properly
Aug 23, 2022
691dcb5
[giskard] (fifth list) == (nth 4 list)
Aug 23, 2022
dfec34f
[env-manip] added 2nd pregrasp pose for handle
Aug 23, 2022
93eb92b
[obj-know] defined 2nd pregrasps for objects of type handle
Aug 23, 2022
5241a76
[boxy-desc] apparently boxy's finger length changed
gaya- Aug 23, 2022
d3f8b3b
[obj-know] arm goal achieved delta is 1 cm now, so tweaked handle pre…
gaya- Aug 23, 2022
920cf76
[btr-belief] arm goal achieved delta is now 1 cm instead of previousl…
gaya- Aug 23, 2022
e3336d3
[fd-plans] don't add GRASPS property if the value is NIL.
gaya- Aug 23, 2022
ac3fe5d
[giskard goal-msgs] fixed Arthur'sbug and added optional params to 2 …
Aug 24, 2022
96c22bd
[fd-plans] propagated parameters of TRANSPORTING's children up to top…
Aug 25, 2022
aa90292
[urdf-proj] when GRIPPING in projection, close gripper to 0.5 cm not 0
Aug 25, 2022
966aa6e
[proj-demos] apartment demo
Aug 25, 2022
20d1b4f
[bs] perception pose correction trigger and axis correction threshold…
gaya- Sep 5, 2022
713ebd6
[bs] OBJECT-AT-LOCATION works with location desigs by comparing one g…
gaya- Sep 5, 2022
13e6974
[fd-plans] split access-seal-search-outer-grasps + better goals for S…
gaya- Sep 5, 2022
fed350a
[env-manip] APPLICATION-CONTEXT parameter for REACHING & RETRACTING
gaya- Sep 5, 2022
1fe3872
[env-manip] ignore gripping failure when closing doors / drawers.
gaya- Sep 5, 2022
d183dfe
[proj-reason] allow collisions between the fingers and the handle whe…
gaya- Sep 5, 2022
ca27600
[comm-desig + pp-plans] STRAIGHT-LINE symbolic constraint + fixed for…
gaya- Sep 5, 2022
3a99c13
[mpp-plans] commented out a call to VISUALIZE-MARKER:
gaya- Sep 5, 2022
28d0536
[tf] in VALUES-CONVERGED, if both values are NIL, assume they converged.
gaya- Sep 5, 2022
aab0a31
[obj-know] handle and jeroen cup grasp tweaks + refactored multiple p…
gaya- Sep 5, 2022
f21251a
[proj-reason + mpp-plans] when grasping a handle, avoid all collision…
gaya- Sep 5, 2022
0871647
[proj-demos] apartment demo
gaya- Sep 5, 2022
b19792d
[donbot] catkin ignore disappeared somehow from real donbot interface…
gaya- Sep 5, 2022
4715218
[hpn] catkin_ignoring...
gaya- Sep 5, 2022
adfcfd5
Bye bye RoboSherlock :'(
gaya- Sep 5, 2022
8b05d64
[rk] fixed type conversion to keyword, comment out visualization mark…
gaya- Sep 5, 2022
39ed971
[tiago-know] sideways carry joint config + tweaked tool frame 1 cm.
gaya- Sep 5, 2022
fc0f062
[tiago-pms] controlling grippers through an action and not Giskard, w…
gaya- Sep 5, 2022
5073f27
[giskard] tiago updates cleaned up.
gaya- Sep 5, 2022
dbb4238
[spatial-cm] removed unnecessary print.
gaya- Sep 5, 2022
38c6da6
[bs] OBJECT-AT-LOCATION considers the link if the location is on the …
gaya- Sep 5, 2022
9427613
[proj-reason] removed environment manipulation trajectory axes visual…
gaya- Sep 5, 2022
359e833
[proj-demos] debug prints for retail demo.
gaya- Sep 5, 2022
d929879
[obj-know + proj-demos] apartment demo tweaks for PR2.
gaya- Sep 5, 2022
2bdb1dc
[mpp-plans] bugfix in object to environment attachment:
gaya- Sep 6, 2022
064eea1
[obj-know + proj-demos] apartment demo for pr2
gaya- Sep 6, 2022
369c255
[cm] bugfix in costmap rotation:
Sep 7, 2022
1ca4f6b
[pr2-pms] switched from RS to RK
Sep 7, 2022
a9543c3
pr2 demo save
Sep 12, 2022
a2f5c20
[apart-demo] pouring start vanessa
Sep 13, 2022
10920ac
[proj-demos] apt demo: removed superfluous paren
Sep 13, 2022
66046ef
pr2 demo save:
Sep 13, 2022
abc62e3
[apart-demo] pouring continued
Sep 14, 2022
91afc04
PRECISE-TRACKING for Cart. motions and PARK-ARMS for PICKING-UP
Sep 16, 2022
a2fc99b
[obj-know + proj-demos] minor pose tweaking
Sep 16, 2022
94d3402
working on pouring
Sep 22, 2022
baaeae3
pouring is working
Sep 23, 2022
1b32367
[apartment-demo] demo-merged now
Sep 29, 2022
2c318c4
[mpp-plans] fixed detachment event again
Oct 3, 2022
c58c989
[btr-belief] in consistency checking increased number of search itera…
Oct 3, 2022
cd55d34
[proj-demos] apartment demo indentation
Oct 3, 2022
0db9e5b
[proj-demos] apartment demo removed copy paste of pick-place part
Oct 3, 2022
ce31038
[rk] cup is right side up in cupboard:
Oct 3, 2022
ef631df
[giskard] align planes are back
Oct 3, 2022
40a7f91
[proj-demos] in apartment demo changed going to navigating for better…
Oct 3, 2022
a55ed36
[obj-know] grasping jeroen-cup 1 cm higher:
Oct 3, 2022
3b32093
[proj-demos] in apartment demo changed PICKING-UP into FETCHING for b…
Oct 3, 2022
a0b19cc
[c_projection_demos] apartement demo adjustments for pouring
Oct 4, 2022
afb233d
demo tweaking pouring works!
Oct 4, 2022
c81bc6e
[btr] Add robot support for multiple collisions
artnie Mar 22, 2023
4634c2c
Add function to reset bullet window
Oct 22, 2021
eb0f4e7
[tt-export] Keep failed and highlight
artnie Aug 30, 2022
86fab8a
Add eurobin demo first draft
artnie Mar 31, 2023
da96ef5
Finish basic eurobin scenario, add box mesh
artnie Apr 5, 2023
8700413
Make eurobin box orientation matter
artnie Apr 6, 2023
cd3dbc2
Temp change of iai_apartment urdf in AddWindows branch
artnie Apr 6, 2023
b8fe594
Deliver eurobin item lower
artnie Apr 6, 2023
0b05a91
[giskard] Update CartesianPose velocity fields
artnie Apr 13, 2023
2d906a5
Revert "[giskard] Update CartesianPose velocity fields"
artnie Apr 14, 2023
ae618d4
[giskard] updates for the newest giskard version
Mar 14, 2023
eeed5f1
[btr-belief] Load urdf before debug window
artnie Apr 21, 2023
f53a1f8
[giskard] Update velocity contraint for diff-drive
artnie Apr 21, 2023
9b26560
[demo] Add 45 degree grasp angle for doors
artnie Apr 21, 2023
d5f3f95
[demo] update eurobin demo
artnie Apr 21, 2023
e1ec3ef
[tiago] Add gripper client for native actions
artnie Apr 21, 2023
05f04bb
[demo] Replace giskard call with coe:clear-belief
artnie Apr 26, 2023
1d9071f
[tiago-pm] Add mujoco tiago makro and grippers
artnie Apr 26, 2023
e95e774
[env-man] Search handle link center frame
artnie May 5, 2023
e6ebee4
HACK ignore gripper fingers joint state check
artnie May 5, 2023
123b8c6
HACK ignore extra opening contraints in giskard
artnie May 5, 2023
4c3926d
[demo] Tune pregrasp for door handles and rename
artnie May 5, 2023
cdc3ebe
[demo] Export eurobin-demo
artnie May 5, 2023
d45bc9d
[demo] Launch unreal apartment version & tf_buffer
artnie May 5, 2023
5e5f6fd
Add http rosinstall for docker script
artnie Jun 28, 2022
6dc4129
Update cram-20.04-http.rosinstall
sunava Jul 26, 2022
69ee83c
[jupyter] added a rosinstall for common-lisp-jupyter and its deps
gaya- Mar 25, 2022
5e3adcd
[jupyter] moved rosinstall to the jupyter directory
gaya- Jul 6, 2022
c493cf7
Add jupyter kernel installer and readme.
artnie Jun 30, 2022
9746ccc
Add deps for eurobin docker image
artnie May 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions cram-20.04-http.rosinstall
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# This rosinstall file is used to build docker images w/o an ssh-key setup
- git:
local-name: cram
uri: http://github.com/cram2/cram.git
version: devel
- git:
local-name: roslisp_common
uri: http://github.com/ros/roslisp_common.git
version: master
- git:
local-name: giskard_msgs
uri: http://github.com/SemRoCo/giskard_msgs.git
version: v0.5.0
- git:
local-name: iai_common_msgs
uri: http://github.com/code-iai/iai_common_msgs.git
version: 46d6e9b9be386de9cf5e153f489c382e0c66f74c
- git:
local-name: iai_maps
uri: http://github.com/code-iai/iai_maps.git
version: master
- git:
local-name: iai_robots
uri: http://github.com/code-iai/iai_robots.git
version: master
- git:
local-name: kdl_ik_services
uri: http://github.com/cram2/kdl_ik_service.git



Original file line number Diff line number Diff line change
Expand Up @@ -695,7 +695,7 @@ sampling is used the number of samples can be modified through the optional `sam
angle)))
(if (eq tag :upside-down)
(cl-transforms:q* orientation upside-down-orientation)
(print orientation))))
orientation)))
(ecase tag
(:random (loop for i from 1 to samples
collect (random (* 2 pi))))
Expand Down
85 changes: 54 additions & 31 deletions cram_3d_world/cram_bullet_reasoning/src/robot-model.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,16 @@ Otherwise, the attachment is only used as information but does not affect the wo
(second
(find object-name (attached-objects robot-object) :key #'car))))

(defun urdf-make-compound-shape (collision-elems collision-T-link color compound)
(let ((compound-shape (make-instance 'compound-shape)))
(dolist (collision collision-elems)
(add-child-shape compound-shape
(cl-transforms:transform-pose
collision-T-link (cl-urdf:origin collision))
(urdf-make-collision-shape (cl-urdf:geometry collision) color compound)))
compound-shape))


(defmethod initialize-instance :after ((robot-object robot-object)
&key color name pose
(collision-group :character-filter)
Expand All @@ -315,43 +325,56 @@ Otherwise, the attachment is only used as information but does not affect the wo
Set `compound' T to spawn the robot as compound-shapes, instead of colored-boxes
or convex-hull-shapes."
(with-slots (rigid-bodies links urdf pose-reference-body) robot-object
(labels ((make-link-bodies (pose link)
(labels ((make-link-bodies (root-P-link link)
"Returns the list of rigid bodies of `link' and all its sub-links"
(let* ((pose-transform (cl-transforms:reference-transform pose))
(let* ((root-T-link (cl-transforms:reference-transform root-P-link))
(collision-elem (cl-urdf:collision link))
(collision-elems-list (cl-urdf:collisions link))
(bodies (mapcan (lambda (joint)
(make-link-bodies (cl-transforms:transform-pose
pose-transform (cl-urdf:origin joint))
root-T-link (cl-urdf:origin joint))
(cl-urdf:child joint)))
(cl-urdf:to-joints link))))
(cl-urdf:to-joints link)))
(color (apply-alpha-value
(or color
(when (and (cl-urdf:visual link)
(cl-urdf:material
(cl-urdf:visual link)))
(cl-urdf:color
(cl-urdf:material
(cl-urdf:visual link))))
(let ((some-gray (/ (+ (random 5) 3) 10.0)))
(list some-gray some-gray some-gray
(or *robot-model-alpha* 1.0))))
*robot-model-alpha*)))
(if collision-elem
(cons (cons
(cl-urdf:name link)
(make-instance
'rigid-body
:name (make-rigid-body-name name (cl-urdf:name link))
:mass 0
:pose (cl-transforms:transform-pose
pose-transform (cl-urdf:origin collision-elem))
:collision-shape (urdf-make-collision-shape
(cl-urdf:geometry collision-elem)
(apply-alpha-value
(or color
(when (and (cl-urdf:visual link)
(cl-urdf:material
(cl-urdf:visual link)))
(cl-urdf:color
(cl-urdf:material
(cl-urdf:visual link))))
(let ((some-gray (/ (+ (random 5) 3) 10.0)))
(list some-gray some-gray some-gray
(or *robot-model-alpha* 1.0))))
*robot-model-alpha*)
compound)
:collision-flags :cf-default
:group collision-group
:mask collision-mask))
bodies)
(let ((link-P-collision (cl-urdf:origin collision-elem)))
(cons (cons
(cl-urdf:name link)
(make-instance
'rigid-body
:name (make-rigid-body-name name (cl-urdf:name link))
:mass 0
:pose (cl-transforms:transform-pose root-T-link link-P-collision)
:collision-shape
;; If the urdf link has more than one collision element
;; make a compound shape and add all collisions to it.
;; For calculating the link pose, the rigid-body pose stays
;; the origin of the first collision root-P-collision.
;; The compound collision is offset by the inverse link-P-collision
;; to originate at root-T-link.
(if (> (length collision-elems-list) 1)
(urdf-make-compound-shape collision-elems-list
(cl-tf:transform-inv link-P-collision)
color
compound)
(urdf-make-collision-shape (cl-urdf:geometry collision-elem)
color
compound))
:collision-flags :cf-default
:group collision-group
:mask collision-mask))
bodies))
bodies))))
(let ((bodies (make-link-bodies pose (cl-urdf:root-link urdf))))
(initialize-rigid-bodies robot-object (mapcar #'cdr bodies))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@
(cut:force-ll
(prolog `(and
(btr:bullet-world ?w)
,@(when *spawn-debug-window*
'((btr:debug-window ?w)))
(btr:assert ?w (btr:object :static-plane
:floor ((0 0 0) (0 0 0 1))
:normal (0 0 1) :constant 0
Expand Down Expand Up @@ -74,7 +72,9 @@
(assert (btr:joint-state ?world ?robot
((?torso-joint ?average-joint-value)))))
(warn "ROB-INT:ROBOT was not defined. ~
Have you loaded a robot package?")))))))
Have you loaded a robot package?"))
,@(when *spawn-debug-window*
'((btr:debug-window ?w))))))))

(defun setup-world-database ()
;; make a clean world instance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,16 @@ Anything beyond this distance will cause a correction method to be triggered
to try and correct the unstable object.
If this threshold is NIL, no correction will happen.")

(defparameter *perception-instability-correction-threshold* 0.03
"Once instability has been detected and the consistency checking kicks in,
correct the pose in all axes where the offset is above this threshold.
If the threshold is 0, correct along all axes.")

(defparameter *perception-noise-correction-offset* 0.01
"First distance in meters, with which the unstable perceived object will be
counter-moved when it falls down upon simulation.")

(defparameter *perception-noise-correction-iterations* 5
(defparameter *perception-noise-correction-iterations* 30
"Number of distances to try the correction approach with. In times.")

(defparameter *perception-noise-correction-step* 0.01
Expand Down Expand Up @@ -80,7 +85,7 @@ Returns a list of ((:axis-1 sign-1) (:axis-2 sign-2)...)."
with correction
for distance in dist-list
for axis in '(:x :y :z)
do (when (> (abs distance) *perception-instability-threshold*)
do (when (> (abs distance) *perception-instability-correction-threshold*)
(push (/ distance (abs distance)) correction)
(push axis correction))
finally (return correction)))
Expand Down Expand Up @@ -112,7 +117,10 @@ Returns a list of ((:axis-1 sign-1) (:axis-2 sign-2)...)."
then (+ offset *perception-noise-correction-step*)
for iteration from 1 to *perception-noise-correction-iterations*
do (let* ((scaled-correction
(mapcar (lambda (x) (if (numberp x) (* x offset) x))
(mapcar (lambda (x)
(if (numberp x)
(* x offset)
x))
object-pose-correction))
(object-corrected-pose
(apply #'cram-tf:translate-pose object-pose scaled-correction)))
Expand All @@ -132,4 +140,3 @@ Returns a list of ((:axis-1 sign-1) (:axis-2 sign-2)...)."




Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,18 @@ and renames POSE into OLD-POSE."
(register-object-designator-data
object-data
:type (desig:desig-prop-value (cpoe:event-object-designator event) :type)))
;; visualize the pose as estimated by perception
(cram-tf:visualize-marker
object-pose
;; :topic "cram_items"
:namespace (roslisp-utilities:rosify-underscores-lisp-name object-name)
:id 10
:marker-type :mesh_resource
:scale-list '(1 1 1)
:r-g-b-list '(1 0 0 0.2)
:mesh-path (second (assoc (desig:desig-prop-value
(cpoe:event-object-designator event) :type)
btr::*mesh-files*)))
;; after having spawned the object,
;; correct noise through world state consistency reasoning
(stabilize-perceived-object-pose btr:*current-bullet-world* object-name object-pose)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
;;;
;;; Copyright (c) 2012, Lorenz Moesenlechner <moesenle@in.tum.de>
;;; 2020, Christopher Pollok <cpollok@uni-bremen.de>
;;; 2022, Gayane Kazhoyan <kazhoyan@cs.uni-bremen.de>
;;; All rights reserved.
;;;
;;; Redistribution and use in source and binary forms, with or without
Expand Down Expand Up @@ -33,10 +34,12 @@
(defparameter *torso-convergence-delta* 0.01 "In meters")
(defparameter *gripper-joint-convergence-delta* 0.005 "In meters")
(defparameter *arm-joints-convergence-delta* 0.0174 "In radians, about 1 deg.")
(defparameter *ee-position-convergence-delta* 0.02 "In meters")
(defparameter *ee-position-convergence-delta* 0.01 "In meters")
(defparameter *ee-rotation-convergence-delta* 0.07 "In radians, about 4 deg.")
(defparameter *looking-convergence-delta* 0.01 "In meters")
(defparameter *looking-convergence-joints-delta* 0.07 "In radians, about 4 deg.")
(defparameter *object-position-convergence-delta* 0.35 "In meters")
(defparameter *object-rotation-convergence-delta* 0.70 "In radians, about 40 deg.")

(def-fact-group occasions (cpoe:object-in-hand
cpoe:object-at-location
Expand Down Expand Up @@ -87,7 +90,9 @@
(setof ?object (cpoe:object-in-hand ?object ?_) ?objects)
(member ?object ?objects))
;;
(<- (cpoe:object-in-hand ?object :left-or-right)
(<- (cpoe:object-in-hand ?object ?arm)
(bound ?arm)
(equal ?arm :left-or-right)
(or (cpoe:object-in-hand ?object :left)
(cpoe:object-in-hand ?object :right)))

Expand Down Expand Up @@ -496,14 +501,38 @@

;; if ?location-designator is in the robot hand, check if object-in-hand
(<- (%object-at-location ?world ?object ?location-designator)
(cpoe:object-in-hand ?object)
(cpoe:object-in-hand ?object ?_ ?_ ?object-holding-link)
(desig:loc-desig? ?location-designator)
(desig:current-designator ?location-designator ?current-location-designator)
(or (desig:desig-prop ?current-location-designator (:on ?robot-designator))
(desig:desig-prop ?current-location-designator (:in ?robot-designator)))
(desig:current-designator ?robot-designator ?current-robot-designator)
(spec:property ?current-robot-designator (:part-of ?robot-name))
(rob-int:robot ?robot-name))
(rob-int:robot ?robot-name)
(-> (spec:property ?current-robot-designator (:urdf-name ?robot-link))
(equal ?robot-link ?object-holding-link)
(true)))

;; compare the exact poses
(<- (%object-at-location ?world ?object ?location-designator)
(not (cpoe:object-in-hand ?object))
(lisp-type ?location-designator desig:location-designator)
(btr:bullet-world ?world)
(lisp-fun desig:current-desig ?location-designator ?current-location)
(lisp-pred identity ?current-location)
(desig:designator-groundings ?current-location ?all-poses)
(once (member ?target-pose ?all-poses))
(object-designator-name ?object ?object-name)
(or (btr:object-pose ?world ?object-name ?object-pose)
(btr:object-bottom-pose ?world ?object-name ?object-pose))
(symbol-value cram-tf:*fixed-frame* ?fixed-frame)
(lisp-fun cl-transforms-stamped:pose->pose-stamped ?fixed-frame 0.0
?object-pose ?object-pose-stamped)
(symbol-value *object-position-convergence-delta* ?delta-pos)
(symbol-value *object-rotation-convergence-delta* ?delta-rot)
(lisp-pred cram-tf:pose-stampeds-converged
?object-pose-stamped ?target-pose
?delta-pos ?delta-rot))

(<- (%joint-at ?joint ?goal-state ?delta)
(rob-int:robot ?robot)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
(:export
;; vis-tools.lisp
#:visualize-designator-costmaps #:visualize-gripper
#:reset-debug-window
;; object-database.lisp
#:scenario-objects-init-pose #:scenario-objects-default-color #:scenario-object-color
#:scenario-object-shape #:scenario-object-extra-attributes
Expand Down
13 changes: 13 additions & 0 deletions cram_3d_world/cram_bullet_reasoning_utilities/src/vis-tools.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,16 @@
`(and (cram-robot-interfaces:robot ?robot)
(cram-robot-interfaces:standard<-particular-gripper-transform
?robot ?transform)))))))))))))

(defun reset-debug-window ()
"Terminates debug-window thread and launches a new one."
(let ((thread (find "Debug window"
(sb-thread:list-all-threads)
:key 'sb-thread:thread-name
:test 'string=)))
(when thread
(sb-thread:terminate-thread thread)))
(when btr:*debug-window*
(cl-bullet-vis:close-window btr:*debug-window*))
(sleep 1)
(btr:add-debug-window btr:*current-bullet-world*))
Loading