Auto-calibration problem November 13, 2015 02:44PM |
Registered: 8 years ago Posts: 60 |
Re: Auto-calibration problem November 13, 2015 03:17PM |
Registered: 8 years ago Posts: 153 |
Re: Auto-calibration problem November 13, 2015 03:34PM |
Registered: 8 years ago Posts: 60 |
Re: Auto-calibration problem November 13, 2015 07:43PM |
Registered: 10 years ago Posts: 732 |
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: 8 years ago Posts: 916 |
Re: Auto-calibration problem November 14, 2015 04:00AM |
Registered: 9 years ago Posts: 14,664 |
Re: Auto-calibration problem November 14, 2015 07:29AM |
Registered: 8 years ago Posts: 60 |
Re: Auto-calibration problem November 14, 2015 12:11PM |
Registered: 10 years ago Posts: 732 |
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: 8 years ago Posts: 60 |
Re: Auto-calibration problem November 16, 2015 12:57PM |
Registered: 9 years ago Posts: 14,664 |
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: 10 years ago Posts: 732 |
Re: Auto-calibration problem November 16, 2015 01:29PM |
Registered: 8 years ago Posts: 60 |