|
Auto-calibration problem November 13, 2015 02:44PM |
Registered: 10 years ago Posts: 60 |
|
Re: Auto-calibration problem November 13, 2015 03:17PM |
Registered: 10 years ago Posts: 153 |
|
Re: Auto-calibration problem November 13, 2015 03:34PM |
Registered: 10 years ago Posts: 60 |
|
Re: Auto-calibration problem November 13, 2015 07:43PM |
Registered: 12 years ago Posts: 735 |
The only common issue I know about is that at least some windows versions of wxmaxima do not know properly unicode characters. The file is UTF-8 encoded. Works fine on linux. On windows, one may need to do search and replace to get ride of the unicode letter α, β, γ. E.g. α -> alpha, β -> beta, γ -> gamma.Quote
pkm
BTW I can't geth wxmaxima to calculate that sheet, there's some Lisp error at the end.
|
Re: Auto-calibration problem November 13, 2015 11:08PM |
Registered: 10 years ago Posts: 916 |
|
Re: Auto-calibration problem November 14, 2015 04:00AM |
Registered: 12 years ago Posts: 14,691 |
|
Re: Auto-calibration problem November 14, 2015 07:29AM |
Registered: 10 years ago Posts: 60 |
|
Re: Auto-calibration problem November 14, 2015 12:11PM |
Registered: 12 years ago Posts: 735 |
Marlin: Use command M114 to get carriage positions on towers at the moment the probe touches the bed. To touch the bed I use G30. I'm not sure how the latest Marlin behaves. In past, it did return exactly 2 mm from the probe point ... so all the values from M114 would be offset by 2 mm. It does not really matter that they are offset provided that the offset is the same for all probe points.Quote
pkm
hercek That was UTF as you said! Later I found the edited calibration sheet on the forum, it works and I'll take a better look at it
I guess that you get actuators values for each point from marlin somehow. But what if I would like to use an IR sensor or just a gauge for measuring, then I should enable reverse kinematics in the calibration sheet, right? Or I can get RepRapFirmwareto output those values?
import System.Random
import qualified Data.Set as Set
xyRange :: Int
xyRange = 90
xyInc :: Int
xyInc = 9
radiusSq :: Int
radiusSq = 115*115
speed :: Int
speed = 90*60
height :: Int
height = 14
main :: IO ()
main = mkBgn >> go (shuffle 0 points)
where
go [] = return ()
go ((x,y):rest) =
if x*y > radiusSq then go rest else do
putStrLn $ mkG0 x y
putStrLn "G30"
go rest
mkBgn = mapM_ putStrLn
[ "G0 X0 Y0 Z" ++ show height
, "G0 X-41.2 Y-23.8 F" ++ show speed
, "G0 X0 Y-48"
, "G0 X41.2 Y-23.8"
, "G0 X41.2 Y23.8"
, "G0 X0 Y48"
, "G0 X-41.2 Y23.8"
, "G0 X0 Y0" ]
mkG0 x y =
showString "G1 X" $ shows x $ showString " Y" $ shows y $ showString " Z" $ show height
points :: [(Int,Int)]
points =
let range = [0-xyRange, xyInc-xyRange .. xyRange] in
concat $ map (\r -> zip range (repeat r)) range
shuffle :: Int -> [a] -> [a]
shuffle seed lst =
let ll = length lst in
if ll < 2 then lst else
pick lst $ mkRandomSeq (ll-1) (randomRs (0, ll-1) $ mkStdGen seed) ll
pick :: [a] -> [Int] -> [a]
pick rv@[] _ = rv
pick rv@[_] _ = rv
pick _ [] = undefined
pick lst (p:ps) =
let (prefix, x:sufix) = splitAt p lst in
x : pick (prefix ++ sufix) ps
mkRandomSeq :: Int -> [Int] -> Int -> [Int]
mkRandomSeq maxRandomNumber randomNumbers rvLength = go randomNumbers rvLength
where
go [] _ = []
go _ 0 = []
go (r:rs) cnt =
let upperLimit = cnt * ((maxRandomNumber+1) `div` cnt) in
if r >= upperLimit then go rs cnt else
(r `rem` cnt) : go rs (cnt-1)
|
Re: Auto-calibration problem November 16, 2015 09:52AM |
Registered: 10 years ago Posts: 60 |
|
Re: Auto-calibration problem November 16, 2015 12:57PM |
Registered: 12 years ago Posts: 14,691 |
Quote
pkm
dc42
David, is it currently possible to log more than 16 probing points? I would like to build a height map for the printer, use the data for calculations etc.
|
Re: Auto-calibration problem November 16, 2015 01:10PM |
Registered: 12 years ago Posts: 735 |
|
Re: Auto-calibration problem November 16, 2015 01:29PM |
Registered: 10 years ago Posts: 60 |